Тот факт, что вы удаляете вещи, означает, что позиция пропускается каждый раз, когда вы выполняете удаление.

ющий код:

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 в отношении этого поведения?

Обратите внимание, что я не пытаюсь обойти поведение, а понять его.

Ответы на вопрос(1)

Ваш ответ на вопрос