Sobes.tech
Back to questions
Junior — Middle
80

Что произойдет, если выполнить цикл `for`, итерирующийся по списку, и этот список изменится во время итерации?

Answer from AI

sobes.tech AI

Если во время итерации цикла for по списку этот список изменяется (например, элементы добавляются или удаляются), поведение зависит от того, как именно организован цикл.

В Python при итерации по списку создаётся итератор, который обращается к элементам по индексам. Если список изменяется во время итерации, это может привести к:

  • Пропуску некоторых элементов или повторному прохождению элементов.
  • Ошибкам, если изменяется длина списка.

Пример:

lst = [1, 2, 3, 4]
for x in lst:
    print(x)
    if x == 2:
        lst.remove(3)  # изменяем список во время итерации

В этом примере элемент 3 будет удалён, и итерация может пропустить некоторые элементы или вести себя непредсказуемо.

Рекомендуется не изменять список во время итерации. Если нужно изменить, лучше итерироваться по копии:

for x in lst[:]:  # копия списка
    if условие:
        lst.remove(x)