Курс 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. Lambda-функция в Python: использование с map() и sum()
  2. Работа с классами данных
  3. Метод rmatmul для обратного матричного умножения
  4. Назначение максимального и минимального значения переменной в Python.
  5. Получение имени функции с помощью inspect
  6. Поиск подстроки в строке
  7. Импорт модуля из другого каталога
  8. Обработка исключений с блоком else
  9. Проверка на палиндром
  10. Реверс строки в Python
  11. Сравнение строк в Python
  12. Оформление кода по PEP 8
  13. Округление дробей в Python
  14. Работа с PosixPath() в Python
  15. Создание namedtuple списком полей
  16. Функции с дополнением
  17. Установка и использование howdoi
  18. Функциональное программирование в Python
  19. Метод __call__ в Python
  20. Работа с deque из collections
  21. Работа с файлами в Python
  22. Поиск с помощью регулярных выражений
  23. Операции со строками в Python
  24. Аннотации типов в Python
  25. Оператор * в Python
  26. Замена текста с re.sub()
  27. Принцип одной функции
  28. Работа с множествами в Python
  29. Генерация случайных чисел в Python
  30. Преобразование данных в Python
  31. Функция zip() — объединение последовательностей
  32. Добавление элементов в список
  33. Операторы Splat и splatty-splat
  34. Генераторы списков в Python
  35. None в Python: использование и особенности
  36. Блок try…finally в Python
  37. Декоратор для группы пользователей в Django
  38. Функция reversed() в Python
  39. Аннотации типов в Python
  40. Установка random seed в Python
  41. Список переменных в Python
  42. Поиск наиболее частого элемента
  43. Асинхронное выполнение задач в Python
  44. Объединение словарей в Python
  45. Поиск наиболее частого элемента в списке

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