Раньше я думал, что for-l oop в python работает так: сначала он делает итератор, выполняя iter(iterable)
, затем next(that_new_iterator_object)
, а когда он поднимает StopIteration
, то for-l oop заканчивается и переходит в блок else
(если имеется), но здесь он работает по-другому
>>> a = [1,2,3,4,5,6,7,8,9]
>>> for i in a:
del a[-1]
print(i)
1
2
3
4
5
, где остальные числа 6,7,8, 9 новый объект итератора, который создается для -l oop, а переменная a отличается