Курс 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. Использование эмодзи в Python
  2. Создание новых функций с помощью functools.partial
  3. Генераторы по генератору
  4. Проверка наличия элемента в списке
  5. Переопределение метода __lshift__
  6. Обработка данных в Python
  7. Просмотр атрибутов и методов класса
  8. Передача аргументов в Python
  9. Numpy: разбиение массивов
  10. Списки: объединение, изменение
  11. Создание множества в Python
  12. Настройка вывода в Numpy
  13. Списковые включения в Python
  14. Генератор чисел Фибоначчи
  15. Объединение кортежей в Python
  16. Многопоточность в Python
  17. Сортировка и обратный порядок
  18. Python Метод sleep() из time
  19. Лямбда-функции в Python
  20. Конструктор в Python
  21. Метод __iand__ для пользовательских классов
  22. Работа с изображениями Pillow
  23. Переопределение метода __eq__
  24. Получение текущей даты и времени с помощью datetime
  25. Функция product() в Python
  26. Удаление дубликатов в pandas
  27. Подписка на каналы разработчиков
  28. Работа со строками в Python.
  29. Любовь к Python
  30. Управление браузером с Selenium
  31. Работа с файлами в Python
  32. Замыкания в Python
  33. Работа с JSON в Python
  34. Генерация случайных чисел в Python
  35. Оптимизация методов в Python 3.7
  36. Копирование словарей и списков в Python
  37. Извлечение статей с newspaper3k
  38. Лямбда-функции в Python
  39. Сравнение строк в Python
  40. Метод ior для битовых операций
  41. Импорт объектов из модулей
  42. Поиск с помощью регулярных выражений
  43. Модуль xkcd: загрузка комиксов
  44. Создание виртуальной среды
  45. Перевод текста с Python Translator
  46. Выход из профиля в Django
  47. Форматирование строк с % в Python

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