Встречается на собеседованиях • сегодня
В чём разница между генератором и итератором
Генератор — это частный случай итератора, который создаётся с помощью функции с 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
интервью вопросы и ответы