Следующий код:
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.
Обратите внимание, что я не ищу обойти поведение, но понять его.