Курс 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. Метод pos в Python
  3. Условные выражения в Python
  4. Копирование словарей и списков в Python
  5. Умножение строк и списков
  6. Список методов и атрибутов
  7. Namedtuple в Python
  8. Очистка данных в Python
  9. Отправка POST запроса на сервер.
  10. *args и **kwargs в Python
  11. Отделение звука от видео
  12. None в Python: использование и особенности
  13. Генератор списка с условием if
  14. Обход дочерних элементов BeautifulSoup
  15. Проверка дублей в списке.
  16. Метод __getitem__ в Python
  17. Повторение элементов в Python
  18. Работа с OpenCV
  19. Функция enumerate в Python
  20. Сравнение неупорядоченных списков
  21. Открытие, чтение и закрытие файла
  22. Импорт модуля из другого каталога
  23. Оптимизация сравнения в Python
  24. Упрощение работы с JSON-данными в Python
  25. Разрешение имен в Python
  26. Метод enumerate() в Python
  27. Метод invert для побитового отрицания
  28. Метод gt в Python
  29. Получение текущей даты и времени с помощью datetime
  30. Defaultdict в Python
  31. Вложенные циклы в Python
  32. Конвертация изображений в PDF
  33. Определение имен функций
  34. Обход элементов в Python
  35. Обмен значений переменных в Python
  36. Создание словарей в Python
  37. Хранение переменных в Python.
  38. Очистка списка от False, None, 0, «»
  39. Замеры производительности в Python
  40. Получение локальных переменных в Python
  41. Библиотека wikipedia для Python
  42. Подсказки типов в Python
  43. Оператор += в Python
  44. Объединение словарей в Python 3.5+
  45. Обход словаря в Python
  46. Эффективная конкатенация строк в Python
  47. Импорт с альтернативным именем
  48. Модуль os: работа с файлами и папками
  49. PATCH-запрос с библиотекой requests
  50. Оптимизация интернирования строк

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