Курс 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. Округление дробей в Python
  2. История Python
  3. Операции с датами в Python
  4. Множественное присваивание в Python
  5. Проверка условий: all и any
  6. Нан-рефлексивность в Python
  7. Подсказки типов в Python
  8. Синтаксис переменных цикла в Python
  9. Оператор Walrus в Python
  10. Подсчет элементов с помощью Counter из collections
  11. Избегайте использования goto
  12. Избегайте двойного подчеркивания
  13. Использование подчеркивания в REPL
  14. Метод rpow в Python
  15. Howdoi — получение ответов из терминала
  16. Метод splitlines() для разделения строк
  17. Итерации в Python
  18. Кортежи в Python: особенности и преимущества
  19. Определение относительного пути
  20. Импорт классов из другого файла
  21. Декоратор защиты анонимных пользователей
  22. Генерация случайных чисел в Python
  23. Сортировка с параметром key
  24. Управление экспортом элементов
  25. Установка User-Agent в Python
  26. Установка и использование emoji
  27. Фильтрация списка от «ложных» значений
  28. Дизассемблирование Python кода
  29. Декораторы в Python
  30. Методы list в Python
  31. Оформление текста в консоли с TermColor
  32. Работа с модулем bisect
  33. Метод index() в Python
  34. Генераторы в Python
  35. Константы в модуле cmath
  36. Генератор списка с условием if
  37. Python: отличительная особенность — отступы
  38. Работа с PosixPath() в Python
  39. Удаление специальных символов с помощью re.sub
  40. Оператор is в Python
  41. Операции с комплексными числами
  42. Аннотации типов в Python
  43. Условное добавление элементов в список
  44. Метод count() для списков

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