Что такое итераторы и генераторы? В чём их смысл?
Ответ от нейросети
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, не создавая сразу весь список в памяти.