Курс 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. Обработка ошибки IndexError
  4. Многоточие в Python
  5. Python: возвращение нескольких значений
  6. Условные выражения в Python
  7. Запуск файлового сервера
  8. Имена объектов в Python
  9. Преобразование многоуровневого словаря
  10. Обработка StopIteration в Python
  11. Функция zip() в Python
  12. Сравнение неупорядоченных списков
  13. split() без разделителя
  14. Получение размера объекта с sys.getsizeof()
  15. Генераторы в Python
  16. Enum в Python
  17. Работа с байтовыми строками в Python
  18. Установка и использование библиотеки google
  19. Хеши в Python
  20. Сложение матриц в NumPy
  21. Принципы Zen of Python
  22. Переопределение метода divmod
  23. Работа с комплексными числами
  24. Изменение списка срезами
  25. Сортировка в Python
  26. Генерация случайных чисел в Python
  27. Отправка POST запроса на сервер.
  28. Метод join() для объединения строк
  29. Преобразование в float
  30. Работа с эмодзи в Python
  31. Виртуальное окружение Python
  32. Хеширование паролей с солью
  33. Работа с Colorama
  34. Локальные переменные.
  35. Python union() функция — объединение множеств
  36. Копирование в Python
  37. Работа с Telegram API на Python
  38. Конвертация изображений в PDF
  39. Особенности запятых в Python
  40. Работа с контекстным менеджером Pool
  41. Работа с атрибутом dict
  42. Работа с PosixPath() в Python

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