Sobes.tech
Back to questions
Middle+
5

Что такое итераторы и генераторы? В чём их смысл?

Companies where asked
cleverbots

Answer from AI

sobes.tech AI

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

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

Смысл итераторов и генераторов — эффективное и ленивое (отложенное) получение элементов последовательности, что экономит память и позволяет работать с потенциально бесконечными или очень большими наборами данных.

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

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

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

Этот код выведет числа от 1 до 5, не создавая сразу весь список в памяти.