Sobes.tech
Junior — Middle
98

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

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)