Курс 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: цикл for и оператор присваивания
  2. Удаление элемента из списка
  3. Python groupby() из itertools: работа с повторяющимися элементами
  4. Открытие и запись файлов
  5. Преобразование списка в словарь через генератор
  6. Поиск наиболее частого элемента в списке
  7. Новшества Flask 2.0
  8. Функция zip() — объединение последовательностей
  9. Построение графиков в терминале с bashplotlib
  10. Создание инструмента обнаружения плагиата
  11. Python Enum Weekday Usage
  12. Поиск индексов подстроки
  13. Оператор морж в Python 3.8
  14. Срез в Python
  15. Декодирование байтов в строку
  16. Генераторы в Python
  17. Названия переменных
  18. Печать календаря
  19. Метод enumerate() в Python
  20. Представление бесконечности в Python
  21. Синхронизация потоков с time.sleep()
  22. Преобразование данных в Python
  23. Перебор элементов списка в Python
  24. Получение атрибутов и методов класса
  25. Переопределение метода delitem в Python
  26. Форматирование чисел в Python
  27. Декораторы в Python
  28. Использование defaultdict в Python
  29. Обход словаря в Python
  30. Руководство по Pymorphy2
  31. Работа с исключениями в Python
  32. Lambda-функция в Python: использование с map() и sum()
  33. Создание пользовательской коллекции в Python
  34. Итерация по итерируемым объектам
  35. Работа с итераторами в Python
  36. Преобразование данных в Python
  37. Генератор списка в Python
  38. Функции высшего порядка в Python
  39. Поиск индексов в списке
  40. Избегайте изменяемых аргументов
  41. Создание GUI с Tkinter: Entry
  42. Именованные срезы в Python
  43. Профилирование данных с Pandas.
  44. Сглаживание списка

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