Sobes.tech
Middle
40

Что такое итераторы и генераторы в Python и в чем их разница?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Итератор в Python — это объект, который реализует метод __iter__() и метод __next__(). Он позволяет последовательно перебирать элементы коллекции без необходимости загружать все данные сразу в память.

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

Здесь count_up_to — генератор, который возвращает числа от 1 до n по одному за раз.