Понимания не заботятся о присвоении того же имени, которое используется в понимании.
a = [0, 1, 2, 3, 4]
a = [i*2 for i in a]
print(a)
Выходы [0, 2, 4, 6, 8]
.
На вашем примере вы добавляете элементы в res
список при переборе по нему:
for i in a:
a.append(i)
Это дает вам бесконечный цикл, потому что при переходе к следующему элементу в список добавляется больше элементов.
Вы можете выбрать один из следующих вариантов:присвоение имени новой переменной или использование нарезки для перебора временной копии списка:
a = [0, 1, 2, 3, 4]
b = []
for i in a:
b.append(i)
print(b)
Выходы [0, 1, 2, 3, 4]
a = [0, 1, 2, 3, 4]
for i in a[:]:
a.append(i)
print(a)
Вывод [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
.
a[:]
- это срез a
от первого до последнего элемента с шагом 1. Вы можете узнать больше о нарезке здесь или в официальных документах Python.