Курс 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. Создание вложенных циклов for
  3. Метод lt для сортировки объектов
  4. Объединение словарей в Python
  5. OrderedDict — упорядоченный словарь
  6. Отправка HTTP-запросов с User-Agent
  7. Срезы в Python
  8. Поиск email
  9. Работа с комплексными числами
  10. Экспорт данных в файл.
  11. Библиотека funcy: удобные утилиты
  12. Основные функции и модули Python
  13. Использование defaultdict в Python
  14. Модуль future Python
  15. Объединение списков с использованием itertools.chain
  16. Декодирование байтов в строку
  17. Применение функции к списку
  18. Извлечение аудио из видео
  19. Склеивание строк без циклов
  20. Возведение в квадрат с помощью itertools
  21. Установка Git и AWS CLI
  22. Создание директории в Python
  23. Работа с необработанными строками
  24. Работа с пользовательским вводом
  25. Метод setdefault() в Python
  26. Обязательные аргументы в Python
  27. Numpy: объединение массивов
  28. Функции-генераторы в Python
  29. Оператор обр. импликации
  30. Декоратор @override
  31. Оператор морж в Python 3.8
  32. Проверка типа объекта в Python
  33. Особенности ключей словаря в Python
  34. Сортировка списка по индексам
  35. Изменение переменной в Python: nonlocal
  36. Работа с временем в Python
  37. Основы работы со списками
  38. Python: возвращение нескольких значений
  39. Генераторы списков в Python
  40. Импорт модулей и пакетов в Python
  41. Преобразование документов в PDF с помощью Spire.Office
  42. F-строки в Python 3.8
  43. Преобразование Excel в PDF с Spire.XLS
  44. Расчет времени выполнения
  45. Проверка ввода с помощью isdigit
  46. Запрос DELETE с библиотекой requests

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