Python генераторы: генерация списков, словарей и других последовательностей в одной строке кода

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

Пример определения генератора в Python:


def my_generator():
    yield 1
    yield 2
    yield 3

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


for value in my_generator():
    print(value)

Вывод будет таким:


1
2
3

Хотя можно использовать и обыкновенную функцию для генерации определенного списка значений:


def my_custom_function():
    return [1, 2, 3]
for value in my_custom_function():
    print(value)

Такой код тоже будет работать и вывести на экран список значений от 1 до 3, но достаточно поместить в функцию дополнительные вычислительные задачи и список станет огромным, что пропорционально увеличит потребление ресурсов памяти.

Генераторы же позволяют создавать последовательности из больших данных без их загрузки в память, а чтобы проиллюстрировать это свойство, можно сгенерировать последовательность простых чисел с помощью генератора:


def primes():
    yield 2
    primes_found = [2]
    number = 3
    while True:
        prime = True
        for divisor in range(2, number):
            if divisor * divisor > number:
                break
            if number % divisor == 0:
                prime = False
                break
        if prime:
            primes_found.append(number)
            yield number
        number += 1
for value in primes():
    if value > 20:
        break
    print(value)

Вывод будет таким:


2
3
5
7
11
13
17
19

Этот код генерирует бесконечную последовательность простых чисел, но при их появлении они сразу же добавляются в список primes_found, и благодаря свойству yield значения возвращаются "лениво", по мере необходимости, но при этом в оперативной памяти всегда хранится только последнее найденное простое число.

Использование генераторов в Python позволяет оптимизировать работу с данными, их преобразование и нахождение. Вместе с примерами кода можно увидеть использование генераторов в обработке файлов, сетевых запросов и любых других случаях сбора/обработки больших объемов данных.

Похожие вопросы на: "python генераторы "

Java Exception - Understanding and Handling Exceptions in Your Code
XAMPP скачать x64 для Windows 10
Listagg Oracle: Синтаксис, Примеры | Руководство от Netology
Как удалить папку в Linux: подробный гайд
Jaspersoft Studio: создание отчетов легко и удобно
Графические библиотеки C - выбор лучших инструментов для графического программирования
Опросы онлайн: соберите мнение и данные легко и быстро
Loc Python - изучаем язык программирования Python
Руководство по методу arraycopy в Java
Gensim: библиотека для разработки алгоритмов машинного обучения и обработки текста