Основной навык отладки: добавьте print
операторов. (или print
функции в Python 3)
>>> list1= [1, 2, 3, 4, 5, 6]
>>> for item in list1:
... print item
... list1.remove(item)
... print list1
...
1
[2, 3, 4, 5, 6]
3
[2, 4, 5, 6]
5
[2, 4, 6]
Обратите внимание, что Python пытается пройти через позиции списка, но вы продолжаете удалять элементы из списка, в результате чего позиции становятся бессмысленными.
Python выбирает элемент из списка в позиции 0.
Затем вы удаляете элемент, изменяя список.
Затем Python выбирает элемент в позиции 1 из списка (появляется, чтобы пропустить элемент)
Затем вы удаляете этот элемент, изменяя список.
Затем Python выбирает элемент в позиции 2 из списка (кажется, чтобы пропустить элемент)
Затем вы удаляете элемент, изменяя список.
Затем Python хотел бы выбрать элемент в позиции 3, но такого элемента нет. Так что цикл останавливается.