Курс 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. Декораторы в Python
  2. Конкатенация строк с помощью join()
  3. Codecademy в Telegram
  4. Векторизация в Python с NumPy.
  5. Удаление элементов из списка в Python
  6. Извлечение данных из JSON
  7. Метод __call__ в Python
  8. Перегрузка операторов в Python
  9. Обмен данными с asyncio.Queue
  10. Работа со слайсами
  11. Получение имени функции с помощью inspect
  12. Изменение списка срезом
  13. Метод Enumerate() для списков
  14. Метод __iand__ для пользовательских классов
  15. Разделение строки с регулярными выражениями
  16. Python Enumerate
  17. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  18. Асинхронное программирование с asyncio
  19. Переменная Шредингера
  20. Работа с пользовательским вводом
  21. Установка и загрузка Instaloader
  22. Оптимизация поиска в словарях
  23. Установка и использование Telegram API в Python
  24. Объединение словарей в Python
  25. Преобразование чисел в слова
  26. Оператор «not» в Python
  27. Генераторы в Python
  28. Проекты на Python
  29. Управление асинхронными задачами с помощью Semaphore
  30. Транспонирование матрицы в Python
  31. Добавление Progressbar в Python
  32. Преобразование регистра символов
  33. Форматирование объектов с модулем pprint
  34. Скрытие вывода данных
  35. Оптимизация памяти с __slots__
  36. Создание новых списков
  37. Перебор элементов списка в Python
  38. Итераторы с потерямиZIP
  39. Конкатенация списков в Python
  40. Работа с датой и временем в Python
  41. Сравнение def и lambda-функций
  42. Retrying в Python: повторные вызовы
  43. Именование столбцов в Python с pandas
  44. Работа с массивами в Python

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