Следующий код:
a = list(range(10))
remove = False
for b in a:
if remove:
a.remove(b)
remove = not remove
print(a)
Вывод [0, 2, 3, 5, 6, 8, 9]
вместо [0, 2, 4, 6, 8]
при использовании Python 3.2.
- Почему он выводит эти конкретные значения?
- Почему не указана ошибка, указывающая, что основной итератор изменяется?
- Изменились ли механики из более ранних версий Python в отношении этого поведения?
Обратите внимание, что я не ищу работу, но чтобы понять ее.