Курс 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. Перебор элементов списка в Python
  3. Создание треугольника Паскаля
  4. Переопределение метода len
  5. Перемешивание списка с shuffle()
  6. Python itertools combinations() — группировка элементов
  7. Декораторы в Python
  8. Генерация ключей RSA
  9. Подписка на SelectelNews в Twitter
  10. Проблема сравнения словарей
  11. Проверка ввода с помощью isdigit
  12. Подсказки типов в Python
  13. Генератор списка с условием if
  14. Склеивание строк через метод join()
  15. Разделение функций на этапы
  16. Преобразование чисел в восьмеричную строку
  17. Python 3.12: Псевдонимы типов
  18. Оператор is в Python
  19. Генераторы списков в Python
  20. Сортировка в Python
  21. Преобразование вложенного списка
  22. Функции в Python
  23. Форматирование вывода с F-строками
  24. Использование type hints
  25. Аргументы *args и **kwargs
  26. Частичное совпадение пользовательского ввода в Python 3.10
  27. Работа с комплексными числами
  28. Декоратор Property в Python
  29. Объединение строк с помощью метода join
  30. Методы HTTP запросов в Flask
  31. kwargs в Python
  32. Руководство по библиотеке pydantic
  33. Метаклассы в Python
  34. Импорт модулей и пакетов в Python
  35. Операторы увеличения и уменьшения в Python
  36. Определение наиболее частого элемента с помощью collections.Counter
  37. Передача аргументов в Python
  38. Работа с файлами в Python
  39. Операции со строками в Python
  40. Объединение словарей в Python
  41. Преобразование кортежа в словарь.
  42. Установка и использование Python-dateutil
  43. Повторение элементов в Python
  44. Преобразование строки в число
  45. Python Метод sleep() времени
  46. Вложенные функции в Python
  47. Работа с рекламными данными в Pandas

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