Курс Python → Генераторы по генератору

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

Для создания генератора по генератору в Python можно использовать два выражения, разделенных запятой. Например, если у нас есть генератор, который возвращает числа от 1 до 10, мы можем создать новый генератор, который будет возвращать квадраты этих чисел, просто добавив выражение возводящее число в квадрат. Таким образом, мы можем создавать цепочки генераторов для преобразования данных.


def numbers_generator():
    for i in range(1, 11):
        yield i

def squares_generator():
    for num in numbers_generator():
        yield num ** 2

for square in squares_generator():
    print(square)

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

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Flask: создание веб-приложений
  2. Работа с модулем random
  3. Бинарный поиск
  4. Расширение информации об ошибке в Python
  5. Присвоение значений переменным в Python
  6. Модуль itertools: эффективная работа с итераторами
  7. Оператор распаковки в Python
  8. Создание пар из последовательностей
  9. Форматирование заголовков в Python
  10. Оператор «not» в Python
  11. Сравнение строк в Python
  12. Метод split() для разделения строк
  13. Работа с контекстными менеджерами
  14. Создание словарей и множеств в Python.
  15. Переменная Шредингера
  16. Комментарии в Python
  17. Поиск HTML-элементов с BeautifulSoup
  18. Слияние словарей в Python 3.9
  19. Функции с дополнением
  20. Работа с NumPy массивами
  21. Сглаживание списка
  22. Преобразование строк в числа в Python
  23. Поиск уникальных элементов строкой в Python
  24. Вычисление фазы комплексного числа
  25. Установка и использование pyshorteners
  26. Применение функции map() в Python
  27. Ускорение обработки данных с %autoawait
  28. Лямбда-функции в Python
  29. Модуль subprocess: запуск внешних команд
  30. Работа с утверждениями в Python
  31. Список и кортеж в Python
  32. Создание спинбокса в tkinter
  33. Метод lt для сортировки объектов
  34. Переопределение метода __and__
  35. Оптимизация поиска в словарях
  36. Обработка StopIteration в Python
  37. Извлечение чисел из текста
  38. Представление бесконечности в Python
  39. Класс UserDict: дополнительная функциональность
  40. Обновление данных через PUT запрос
  41. Метод __iand__ для пользовательских классов

Marketello читают маркетологи из крутых компаний