Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: iteration, mutation

Почему нежелательно изменять итерируемый объект во время итерации по нему?

Вопрос проверяет понимание механизма итерации и возможных ошибок при изменении коллекций.

Короткий ответ

При изменении списка во время итерации индексы элементов смещаются. В результате некоторые элементы могут пропускаться или обрабатываться дважды. Это приводит к трудноуловимым ошибкам. Правильный подход — итерироваться по копии или формировать новый список.

Длинный ответ

Что происходит при изменении коллекции

Итератор ожидает, что структура списка не меняется.

Если элементы удаляются:

  • индексы смещаются

  • следующий элемент может быть пропущен

Пример проблемы

numbers = [1, 2, 3, 4]

for x in numbers:
    if x % 2 == 0:
        numbers.remove(x)

print(numbers)

Результат может быть неожиданным.

Безопасные способы

Итерироваться по копии

for x in numbers[:]:
    if x % 2 == 0:
        numbers.remove(x)

Создавать новый список

numbers = [x for x in numbers if x % 2 != 0]

Это самый надежный способ.

Когда это особенно критично

  1. Обработка больших коллекций

  2. Очистка данных

  3. Потоковые преобразования

Вывод

Изменение коллекции во время итерации нарушает логику обхода и может приводить к пропущенным элементам; безопаснее итерироваться по копии или формировать новый список.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#iteration

#mutation

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.