Курс 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. Метод __call__ в Python
  2. Pillow: работа с изображениями
  3. Python reversed() vs срез[::-1]
  4. JSON в Python: модуль, dump, dumps, load
  5. Операторы присваивания в Python
  6. Объединение словарей в Python
  7. Отображение графиков в Jupyter с Matplotlib
  8. Работа с zip-архивами в Python
  9. Метод invert для побитового отрицания
  10. Функции высшего порядка в Python
  11. Расширение информации об ошибке в Python
  12. Замыкания в Python
  13. Вывод баннеров
  14. Основы слова
  15. Комплексные числа в Python
  16. Преобразование строки в число
  17. Разработка Telegram-ботов
  18. Итерация по итерируемым объектам
  19. Генераторы списков
  20. Декоратор для группы пользователей в Django
  21. Создание списков в Python
  22. Оптимизация сравнения в Python
  23. Оператор «not» в Python
  24. Лямбда-функции в Python
  25. Декораторы в Python
  26. Векторизация в Python с NumPy.
  27. Мощь вложенных функций в Python
  28. Оценка точности модели
  29. Комментарии в Python
  30. Виртуальные среды в Python
  31. Тестирование модели в PyTorch
  32. Модуль math: константы π и e
  33. Работа с YAML в Python
  34. Создание пустых функций и классов в Python
  35. split() без разделителя
  36. Переопределение метода __pow__
  37. Применение функции map() с лямбда-функциями
  38. Разделение строки на подстроки в Python
  39. Определение объема памяти объекта
  40. Метод __irshift__ для побитового сдвига вправо
  41. Преобразование регистра символов
  42. Игра «Виселица» на Python
  43. Генерация чисел с range()
  44. Работа с исключениями в Python
  45. Чтение и запись TOML-конфигов
  46. Метод matmul для умножения матриц
  47. Создание виртуальной среды
  48. Поиск кода

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