Курс 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. Переменные в Python: сокращение гласных
  2. Ошибка NotImplemented в Python
  3. PrettyTable: создание таблицы
  4. Именованные кортежи в Python
  5. Аннотации типов в Python
  6. Распаковка с оператором *
  7. Метод __imod__ для Python
  8. Работа с модулем random
  9. Объединение списков с помощью zip
  10. Использование type hints
  11. Атрибуты класса и экземпляра
  12. Типы возвращаемых значений в Python
  13. Оптимизация памяти в Python
  14. Оптимизация гиперпараметров с Scikit Optimize
  15. Однострочники Python
  16. Создание коллекций из генератора
  17. Оператор continue в Python
  18. Простой калькулятор Python
  19. Печать списка с помощью метода join
  20. Работа с zip()
  21. Перемещение и удаление файлов в Python
  22. Метод rlshift для битового сдвига
  23. Подписка на SelectelNews в Twitter
  24. Названия столбцов в Python таблицах
  25. Улучшение читаемости кода в Python
  26. Цикл for в Python
  27. Обработка элементов в Python
  28. Округление в Python
  29. Заказ карты Тинькофф Black
  30. Генераторные функции в Python
  31. Ограничение ресурсов в Python
  32. Преобразование строк в числа с плавающей запятой
  33. Метод join() с набором
  34. Выборка чисел
  35. Исправление ошибки NameError
  36. Декораторы в Python
  37. Форматирование даты с strftime()
  38. Работа с CSV файлами в Python
  39. Работа с классами данных
  40. CSV строка разделение в Python
  41. Генерация UUID в Python
  42. Сравнение строк в Python
  43. Замена текста с помощью sub
  44. Условное добавление элементов в список
  45. Обработка исключения UnboundLocalError
  46. kwargs в Python
  47. Проверка кортежей.

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