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

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

Классическая концепция генераторов в информатике была заимствована из языка Haskell и стала популярной во многих других языках программирования, включая Python. Основная идея генераторов заключается в том, что они следуют принципу «вызов-по-необходимости», то есть значения генерируются только при необходимости и не занимают лишнюю память.

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

def square_numbers(n):
    for i in range(n):
        yield i ** 2

# Пример использования генератора
numbers = square_numbers(5)
for num in numbers:
    print(num)

В приведенном примере показано создание генератора, который генерирует квадраты чисел от 0 до n. При обращении к генератору значение не вычисляется заранее, а генерируется только при выполнении итерации. Это позволяет эффективно использовать память и улучшить производительность программы.

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

Автор урока

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

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

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

  1. Преобразование чисел в слова
  2. Определение имен функций
  3. Поиск файлов по шаблону
  4. Конвертация коллекций в Python
  5. Функция zip() в Python
  6. Возврат нескольких значений
  7. Сравнение строк в Python
  8. Генераторы данных
  9. Слияние словарей в Python 3.9
  10. Проверка подстроки в строке
  11. Циклы в Python
  12. Объединение списков в строку
  13. Метод __call__ в Python
  14. Принципы LSP и ISP в Python
  15. Работа с OpenCV
  16. Работа с NumPy массивами
  17. Отделение звука от видео
  18. Операторы сравнения в Python
  19. Переопределение метода divmod
  20. Сортировка элементов в Python
  21. Сравнение объектов в Python
  22. Lambda-функция в Python: использование с map() и sum()
  23. Измерение времени выполнения кода
  24. Изменение списка срезом
  25. Перегрузка операторов в Python
  26. Методы classmethod и staticmethod
  27. Обновление и получение данных в SQLite
  28. Методы в Python
  29. Секреты Python
  30. Принципы Zen of Python
  31. Склеивание строк без циклов
  32. Отслеживание выполнения программы с библиотекой tqdm
  33. Использование функции enumerate()
  34. GitHub в Telegram: подписка на уведомления
  35. Разделение строки с помощью re.split()
  36. Работа с типами данных в Python с помощью pydantic.
  37. Работа с *args и **kwargs в Python
  38. Многопоточность в Python
  39. Работа с enumerate()
  40. Метод __int__ в Python
  41. JSON в Python: модуль, dump, dumps, load
  42. Удаление элементов из списка в Python
  43. Оператор continue в Python
  44. JMESPath в Python
  45. Декораторы в Python
  46. Управление виртуальными средами в Python
  47. Метод join для наборов

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