Что такое итераторы и генераторы в Python и чем они отличаются?

Итератор выдаёт значения через next() и завершает обход исключением StopIteration. Генератор — удобный способ создать итератор с помощью функции с yield или генераторного выражения.

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

Что ответить на собеседовании

Итератор выдаёт значения через next() и завершает обход исключением StopIteration. Генератор — удобный способ создать итератор с помощью функции с yield или генераторного выражения.

Подробный разбор

Ответ с пояснениями

Итератор выдаёт значения через next() и завершает обход исключением StopIteration. Генератор — удобный способ создать итератор с помощью функции с yield или генераторного выражения.

У итератора есть iter(), обычно возвращающий self, и next(). Генератор сохраняет локальное состояние между остановками на yield, поэтому сложный обход не приходится оформлять отдельным классом. Не каждый iterable является итератором: список создаёт новый итератор при iter(list). И генераторы, и обычные итераторы обычно одноразовые; после исчерпания их нужно создавать заново, если требуется повторный проход.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее