Sobes.tech
Back to questions
Middle
2

Что такое итератор и генератор, какие методы они должны реализовывать и в чем отличие?

Companies where asked
fabriqeue

Answer from AI

sobes.tech AI

Итератор — это объект, который позволяет последовательно обходить элементы коллекции. В Python итератор должен реализовывать методы:

  • __iter__() — возвращает сам итератор;
  • __next__() — возвращает следующий элемент или вызывает StopIteration, если элементов больше нет.

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

Отличия:

  • Итератор может быть реализован вручную, а генератор создаётся проще с помощью yield.
  • Генераторы ленивы и позволяют экономить память, так как элементы создаются по мере необходимости.

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

def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

for number in count_up_to(5):
    print(number)