Встречается на 2% собеседований по Python
В чём разница между генератором и итератором
Генератор — это частный случай итератора, который создаётся с помощью функции с yield или генераторного выражения.
Ключевые отличия:
- Создание:
- Итератор — любой объект с методами
__iter__и__next__. - Генератор — автоматически реализует протокол итератора через
yield.
- Итератор — любой объект с методами
-
Память:
- Генераторы ленивые, генерируют значения на лету и не хранят всю последовательность.
- Итераторы могут быть созданы для уже существующих коллекций (например, списка).
-
Одноразовость:
- Оба одноразовые, но генератор нельзя "перезапустить" — нужно создавать заново.
Пример:
python
# Итератор из списка
lst = [1, 2, 3]
iter_obj = iter(lst)
# Генератор
def gen():
yield 1
yield 2
gen_obj = gen()
# Генераторное выражение
gen_expr = (x for x in [1, 2, 3])
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы