Курс 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. Создание виртуальной среды
  2. Разделение строки на пары ключ-значение.
  3. Добавление элементов в список
  4. None в Python: использование и особенности
  5. Работа с кортежами в Python
  6. Форматирование строк в Python
  7. Работа с модулем random
  8. Работа с argparse
  9. Получение ID текущего процесса
  10. Переменная Шредингера
  11. Декоратор Ajax required
  12. Проверка однородности элементов списка
  13. Сортировка в Python
  14. Оператор распаковки в Python
  15. Запуск асинхронной корутины
  16. Ограничение итераций в Python
  17. Библиотека schedule: планировщик задач
  18. Реализация метода __abs__ в Python
  19. Работа с классами данных
  20. Удаление символов новой строки в Python.
  21. Вычисление фазы комплексного числа
  22. Библиотека funcy: удобные утилиты
  23. Форматирование даты с strftime()
  24. Dict Comprehension в Python
  25. IPython и Jupyter Notebook: руководство
  26. Проверка типов с помощью isinstance
  27. Декодирование байтов в строку
  28. Разность множеств
  29. Метод __ilshift__ для битового сдвига влево
  30. Получение списка кортежей из словаря
  31. Генераторы в Python
  32. Переопределение метода __floordiv__
  33. Поиск наиболее частого элемента в списке
  34. Заказ карты Тинькофф Black
  35. Упрощенный вывод данных в Python
  36. Локальные переменные.
  37. Проверка на палиндром
  38. Методы работы со списками
  39. Замена подстроки
  40. Фильтрация входных данных в Python
  41. Управление User-Agent в Python
  42. Объединение списков с использованием itertools.chain
  43. Преобразование чисел в восьмеричную строку
  44. Numpy: объединение массивов

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