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

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

Для создания генератора в Python используется ключевое слово yield вместо return. Когда функция с генератором вызывается, она не выполняется полностью, а возвращает объект-генератор, который можно использовать для итерации. Каждый раз, когда вызывается метод next() или используется цикл for, функция продолжает выполнение с того момента, где был вызван yield, и возвращает значение.


def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b
        
fib = fibonacci()
for i, num in enumerate(fib):
    if i == 10:
        break
    print(num)

В приведенном выше примере определен генератор fibonacci, который возвращает бесконечную последовательность чисел Фибоначчи. При каждом вызове метода next() или итерации циклом for, генератор возвращает следующее число Фибоначчи. Используя цикл for и функцию enumerate, мы можем перебрать первые 10 чисел Фибоначчи из генератора.

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

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

Автор урока

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

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

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

  1. Работа с GitHub в Telegram
  2. Получение размера объекта с sys.getsizeof()
  3. Структурирование именованных констант
  4. Рациональные числа в Python
  5. Карта бомбоубежищ в Москве и Питере
  6. Сортировка с параметром key
  7. Оптимизация создания строк
  8. Очистка данных в Python
  9. Уникальность ключей в словаре
  10. Необязательные аргументы в Python
  11. Прокачанный трейсинг ошибок
  12. Управление контекстом выполнения
  13. Методы Python для работы с данными
  14. Визуализация пропусков данных
  15. Основы Python
  16. Модуль inspect
  17. Векторизация в Python с NumPy.
  18. Работа с изменяемыми коллекциями
  19. Замеры производительности в Python
  20. Генераторы в Python
  21. Обход словаря в Python
  22. Создание функций высшего порядка
  23. Асинхронный код в Python
  24. Встраивание HTML в Jupyter Notebook
  25. Удаление первого элемента списка
  26. Импорт модулей в Python 3.12
  27. Проверка списка: any() и all()
  28. Обновление и получение данных в SQLite
  29. split() — разделение строки
  30. Создание коллекций из генератора
  31. Оператор «is not» в Python
  32. Работа с датами в Python
  33. Преобразование данных в Python
  34. Объединение кортежей в Python
  35. Локальные переменные.
  36. Извлечение данных из JSON
  37. Функции в Python: создание и вызов
  38. Логирование с Logzero
  39. Замена текста в Python
  40. Метод add для класса Vector
  41. Вывод символов строки в Python
  42. Использование подчеркивания в REPL
  43. Оператор space-invader
  44. Протокол управления контекстом
  45. Список и кортеж в Python
  46. Определение объема памяти объекта
  47. Обход дочерних элементов BeautifulSoup

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