Besides the pure python options pointed above, if your list is filled by symbolic expressions, you can also turn it into a vector and do the substitutions straightforwardly.
Given
x = list(var('x', n=10))
ep = list(var('epsilon', n=10))
a random sublist
my_list = [x[randint(0,8)] for _ in range(6)]
and a substitution rule
subs_rule = dict(zip(x[4:], ep))
You can make
my_vec_list = vector(my_list).subs(subs_rule)
and turn back to a list
my_list2 = list(my_vec_list)