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

В Python есть концепция генераторов, которая позволяет создавать итерируемые объекты, генерируя элементы по мере необходимости. В инструкции упомянут пример с генератором, который создает массивы array_1, array_2 и array_3, а затем использует их для создания массива array_4. По логике, значения в массиве array_4 должны быть аналогичными значениям в массиве array_1.

Однако, в соответствии с PEP-289, в Python генераторы вычисляют значения немедленно только для самого внешнего выражения for, в то время как остальные выражения откладываются до момента запуска генератора. Это означает, что при использовании генераторов, значения могут быть вычислены в другом порядке, чем ожидается.

Для более ясного понимания работы генераторов в данном контексте, можно привести пример кода:


array_1 = [1, 2, 3]
array_2 = [10, 20, 30]

def gen():
    for i in array_1:
        for j in array_2:
            yield i + j

array_3 = list(gen())
array_4 = list(gen())

В данном примере, при вызове функции gen() для создания массивов array_3 и array_4, значения будут вычислены в разном порядке из-за особенностей работы генераторов. Поэтому, значения в массиве array_4 могут отличаться от ожидаемых, что объясняется принципами работы генераторов в Python.

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

Автор урока

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

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

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

  1. Замена текста с помощью sub
  2. Работа со словарями с defaultdict из collections
  3. Преобразование текста в нижний регистр
  4. Сравнение строк в Python
  5. Передача словаря через **kwargs
  6. Получение текущей даты в Python
  7. Проверка класса объекта
  8. Поиск с библиотекой Google
  9. Декораторы в Python
  10. Измерение времени выполнения кода
  11. Экспорт данных с помощью writefile
  12. Работа с NumPy.linalg
  13. Сериализация и десериализация объектов
  14. Генераторные функции в Python
  15. Обмен переменными в Jupyter
  16. Поиск наиболее частого элемента
  17. Объединение списков в Python
  18. Условные выражения в Python
  19. Оператор in и not in в Python
  20. Сериализация объектов в Python
  21. Искажение имен в Python
  22. Курсы Яндекс Практикум
  23. Деление в Python
  24. Проверка типа данных
  25. Область видимости переменных
  26. Преобразование строк в числа с плавающей запятой
  27. Библиотека sh: удобные команды терминала
  28. Избегание циклических зависимостей классов в Python
  29. Протокол управления контекстом
  30. Создание новых функций через partial
  31. Обработка исключений в Python
  32. Проверка типов с помощью isinstance
  33. Модуль antigravity: генерация координат
  34. Преобразование данных в Python
  35. Бесконечная проверка в Python
  36. Сравнение строк в Python
  37. Форматирование вывода списков
  38. Решение переменной Шредингера
  39. Методы classmethod и staticmethod
  40. Использование метода lower()
  41. Установка и использование Python-dateutil
  42. Работа с множествами в Python
  43. Глобальные переменные в Python

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