Курс 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. Отправка HTTP-запросов с User-Agent
  2. Измерение времени выполнения кода с помощью time
  3. Обработка ошибок в Python
  4. Декодирование байтов в строку
  5. Метод join для наборов
  6. Работа с коллекциями Python
  7. Создание новых списков
  8. Получение текущего времени в Python
  9. Работа с географическими данными.
  10. Объединение множеств в Python
  11. Работа с библиотекой xkcd
  12. Возвращение нескольких значений
  13. Отправка POST-запроса в REST API
  14. Пропуск начальных строк с помощью dropwhile()
  15. Блок try…finally в Python
  16. Работа с аргументами командной строки в Python
  17. ROT13 Шифр Цезаря в Python
  18. Метод rename() для переименования файлов и каталогов
  19. Функция map() в Python
  20. Импортирование в Python
  21. Группы исключений в Python
  22. Настройка вывода NumPy
  23. Логирование с Loguru
  24. Работа с модулем glob в Python
  25. Декораторы с аргументами в Python
  26. Замена текста в Python
  27. Дизассемблирование Python кода
  28. Python itertools combinations() — группировка элементов
  29. Установка Git и AWS CLI
  30. Создание списка дат
  31. Генераторные функции в Python
  32. Преобразование списков в словарь
  33. Управление виртуальными окружениями в Python
  34. Экспорт функций в Python
  35. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  36. Обновление множества в Python
  37. Удаление элемента из списка
  38. Удаление дубликатов из списка
  39. Извлечение статей с newspaper3k
  40. Ветвление выражения в Python
  41. Оператор «not» в Python
  42. Метод rxor для операции побитового исключающего «или»
  43. Особенности ключей словаря в Python
  44. Объединение словарей в Python
  45. Оператор объединения словарей
  46. Методы работы со строками в Python
  47. Работа с кортежами в Python
  48. Срезы в Python

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