Курс 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. Глубокое копирование объектов
  3. Поиск уникальных элементов строкой в Python
  4. Область видимости переменных
  5. Избегание изменяемых аргументов
  6. Метод count() для списков
  7. Оператор * в Python
  8. Лямбда-функции в Python
  9. Оператор распаковки в Python
  10. Итерация по итерируемым объектам
  11. Использование обратной косой черты в f-строках
  12. Перебор элементов списка в Python
  13. Модуль math: константы π и e
  14. Основные функции и модули Python
  15. Очистка входных данных
  16. Метод count() для списка
  17. Логические операторы в Python
  18. Python: отличительная особенность — отступы
  19. Методы __repr__ и __str__ в Python
  20. Метод __ilshift__ для битового сдвига влево
  21. Удаление файлов и папок в Python
  22. Работа со стеком в Python
  23. Удаление URL-адресов в Python
  24. Вакансии в Nebius
  25. Создание пар из последовательностей
  26. Декоратор total_ordering для класса Point
  27. Анализ текста на русском языке с помощью Pymystem3
  28. Модуль Operator в Python
  29. Функция map() и ленивая оценка
  30. Блок try…finally в Python
  31. Срез в Python
  32. Отправка POST запроса на сервер.
  33. Объединение итераторов
  34. Добавление элемента к кортежу
  35. Функция с *args.
  36. Отрицательные индексы списков в Python
  37. Аннотации типов в Python
  38. Красивый вывод списка
  39. Метод join() для объединения строк
  40. Управление контекстом с помощью декоратора contextmanager
  41. Повторение и перенос строки
  42. Извлечение чисел из текста
  43. Функция zip() в Python
  44. Названия переменных
  45. Метод split() в Python
  46. Регулярные выражения: метод match
  47. Namedtuple в Python

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