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

Что общего у генератора и итератора в Python

Генераторы и итераторы в Python оба позволяют работать с последовательностями элементов, но генератор — это частный случай итератора.

Общие черты:

  1. Оба реализуют протокол итератора (методы __iter__() и __next__()).
  2. Позволяют ленивую (по требованию) обработку данных, экономя память.
  3. Одноразовые — после исчерпания элементов нельзя переиспользовать.

Пример:

python
# Итератор
class MyIterator:
    def __init__(self, max_num):
        self.max_num = max_num
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.max_num:
            self.current += 1
            return self.current
        raise StopIteration

# Генератор (упрощенная версия)
def my_generator(max_num):
    current = 0
    while current < max_num:
        current += 1
        yield current

# Оба можно использовать в for-цикле
for num in MyIterator(3):
    print(num)  # 1, 2, 3

for num in my_generator(3):
    print(num)  # 1, 2, 3

Генераторы проще в написании (через yield), а итераторы требуют явного описания класса.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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