Встречается на собеседованиях • сегодня

В чём разница между генератором и итератором

Генератор — это частный случай итератора, который создаётся с помощью функции с yield или генераторного выражения.

Ключевые отличия:

  1. Создание:
    • Итератор — любой объект с методами __iter__ и __next__.
    • Генератор — автоматически реализует протокол итератора через yield.
  1. Память:

    • Генераторы ленивые, генерируют значения на лету и не хранят всю последовательность.
    • Итераторы могут быть созданы для уже существующих коллекций (например, списка).
  2. Одноразовость:

    • Оба одноразовые, но генератор нельзя "перезапустить" — нужно создавать заново.

Пример:

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])
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы