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

Может ли итератор быть генератором и наоборот

Да, итератор может быть генератором, и генератор — это частный случай итератора.

  • Генератор — это функция с yield, которая автоматически создаёт итератор.
  • Итератор — любой объект с методами __iter__() и __next__().

Пример генератора как итератора:

python
def count_up_to(n):  # генераторная функция
    i = 1
    while i <= n:
        yield i
        i += 1

counter = count_up_to(3) # генератор (итератор)
print(next(counter)) # 1
print(next(counter)) # 2

text

**Пример итератора без генератора:**  
```python
class Counter:
    def __init__(self, limit):
        self.limit = limit
        self.current = 1

    def __iter__(self):
        return self

    def __next__(self):
        if self.current > self.limit:
            raise StopIteration
        value = self.current
        self.current += 1
        return value

counter = Counter(3)  # итератор (не генератор)
print(next(counter))  # 1

Генераторы удобны для ленивых вычислений, а кастомные итераторы дают больше контроля.

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

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

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

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