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