Курс 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. PUT запрос для обновления данных
  2. Python Enumerate
  3. Генератор чисел Фибоначчи
  4. Сортировка слиянием
  5. Проверка строки на палиндром
  6. Работа с модулем glob в Python
  7. Форматирование данных с помощью pprint
  8. Python: отличительная особенность — отступы
  9. Удаление ключа из словаря в Python
  10. Срезы в Numpy
  11. Оператор continue в Python
  12. Обработка исключений в Python
  13. Блок else в циклах Python
  14. Mad Libs Generator
  15. Атрибуты класса и экземпляра
  16. Очистка вывода в Python
  17. Функция map() в Python
  18. Получение размера объекта с sys.getsizeof()
  19. Разделение строки с помощью re.split()
  20. Секреты Python
  21. Flask — веб-фреймворк Python
  22. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  23. Работа с многоуровневыми словарями в Python
  24. Объединение списков с помощью zip
  25. Pillow: работа с изображениями
  26. Сравнение строк в Python
  27. Функции в Python
  28. Фильтрация входных данных в Python
  29. Функция __init__ в Python
  30. Поиск шаблона в начале строки
  31. Форматирование объектов с модулем pprint
  32. Оператор обр. импликации
  33. Оператор «not» в Python
  34. Хранение данных с помощью dataclasses
  35. Игра Виселица на Python
  36. Обмен данными с asyncio.Queue
  37. Создание словаря через dict comprehension
  38. Управление виртуальными средами в Python
  39. Глубокое копирование объектов
  40. Приближение чисел в Python
  41. Сортировка в Python
  42. Модуль sys: основы
  43. Enum в Python
  44. Python Translator: создание локальных переводчиков
  45. Преобразование символов с помощью map
  46. Сортировка и разворот списка
  47. Расширение информации об ошибке в Python
  48. Метод add для класса Vector
  49. Работа с часовыми поясами в Python.

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