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

Генераторы (generators) — это мощный инструмент в Python, который позволяет эффективно обрабатывать большие объемы данных, не загружая всю информацию в память. Вместо того, чтобы хранить все значения в списке или кортеже, генератор поочередно возвращает элементы, когда они запрашиваются. Это особенно полезно, когда вам необходимо обработать большой объем данных по частям или когда вы не знаете заранее, сколько элементов будет обрабатываться.

Для создания генератора в Python используется ключевое слово yield. Когда функция содержит yield, она становится генератором, который можно вызывать итеративно. В примере выше мы создали генератор square_numbers, который возвращает квадраты чисел из переданного списка. При каждом вызове генератора он возвращает следующее значение, а не все значения сразу.


def square_numbers(nums):
    for num in nums:
        yield num**2

my_nums = [1, 2, 3, 4, 5]
my_generator = square_numbers(my_nums)

for num in my_generator:
    print(num)

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

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

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

Автор урока

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

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

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

  1. Вычисление натуральных логарифмов в NumPy
  2. Функция zip() в Python
  3. Создание задания в Cron
  4. Создание циклической ссылки
  5. split() без разделителя
  6. Создание спинбокса в tkinter
  7. Управление User-Agent в Python
  8. Ускорение кода с помощью векторизации
  9. Многопоточность в Python
  10. Управление контекстом с помощью декоратора contextmanager
  11. Печать в одной строке
  12. Разделение строк методом split()
  13. Карта бомбоубежищ в Москве и Питере
  14. Форматирование строк в Python
  15. Big O оптимизация
  16. Работа с изменяемыми списками
  17. Функция map() в Python
  18. Работа с Colorama
  19. Генераторы в Python
  20. Преобразование списков в словарь
  21. Проверка однородности элементов списка
  22. Метод join() для объединения элементов
  23. Атрибуты класса и экземпляра в Python
  24. Ввод нескольких значений
  25. Путь к интерпретатору Python
  26. Форматирование заголовков в Python
  27. Измерение времени выполнения кода
  28. Проверка списка: any() и all()
  29. Оператор распаковки в Python
  30. Решатель судоку на Python с pygame
  31. Настройка вывода в Numpy
  32. Срез в Python
  33. Выборка чисел
  34. Docstring в Python
  35. Magic Commands — улучшение работы с Python
  36. Операция += для списков
  37. Получение текущего времени в Python
  38. Регистрация на курсы SF Education
  39. Структура строк в Python
  40. Декораторы в Python
  41. Использование модуля __future__
  42. Цикл for в Python
  43. Работа с collections.Counter
  44. Работа с словарями в Python
  45. Перевод двоичного кода в целое число
  46. Добавление элементов в список: append() vs extend()

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