You can do it with a list comprehension like this:
test_list = ['this', 'is', 'a', 'test']
first_letters = ['i','t','t','a']
[letter+word[1:] for letter, word in zip(first_letters, test_list)]
# ['ihis', 'ts', 't', 'aest']
The zip function essentially creates this list of tuples (it's actually an iterator of tuples, but for simplicity, it can be thought of as a list):
[('i', 'this'), ('t', 'is'), ('t', 'a'), ('a', 'test')]
Which the list comprehension iterates through, returning a new list with the letter (first element of each tuple) and all letters starting from the second letter of the word (second element of the tuple)
It is essentially equivalent to the following loop, if you prefer that syntax:
result = []
for letter, word in zip(first_letters, test_list):
result.append(letter+word[1:])
aestright?