Ваш алгоритм эквивалентен умножению на степени 2:
x = 3
res = [x * 2**i for i in range(10)]
# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]
Чтобы понять, почему это так, обратите внимание, что вы умножаете свое стартовое число на 2 в каждой итерации цикла for
:
x = 3
res = [x]
for _ in range(9):
y = x + x
x = y
res.append(y)
print(res)
# [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]
Как упоминает @timgeb, вы не можете ссылаться на элементы вашего списка по мере продвижения, поскольку они недоступны до тех пор, пока понимание не будет завершено.