TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.91K subscribers
Post #3662 1.25K
Генераторные выражения вместо построения результирующего списка в памяти возвращают объект генератора — автоматически созданный итерируемый объект. В свою очередь этот итерируемый объект поддерживает протокол итерации, чтобы выдавать по одной порции результирующего списка за раз в любом итерационном контексте.

Итерируемый объект также сохраняет состояние генератора, пока он действует — переменную х в предшествующих выражениях наряду с местоположением в коде генератора. Мы получаем обратно объект, который запоминает оставленное им место после возвращения каждой части результата:


G = (х ** 2 for х in range (4))
next(G) is G # 0
next(G) is G # 1
next(G) is G # 4
next(G) is G # 9
next(G) is G # Остановка итерации


Обычно мы не видим внутренний итерационный механизм next генераторного выражения вроде показанного, т.к. циклы for запускают его автоматически:


for num in (х ** 2 for х in range (4)): # Автоматически вызывает next ()
print (’%s, %s’ % (num, num / 2.0))


Так поступает каждый итерационный контекст: циклы for, встроенные функции sum, map и sorted, списковые включения и другие итерационные контексты, в том числе встроенные функции any, all и list. Будучи итерируемыми объектами, генераторные выражения могут появляться в любом итерационном контексте подобного рода в точности как результат вызова генераторной функции.
More from @quiz_python
  1. Sep 30, 2026Развёрнутое пояснение: 1. defaults содержит исходные значения timeout и retries, а env изн…
  2. Sep 30, 2026Post #4904
  3. Sep 29, 2026Развёрнутое пояснение: 1. Создаётся функция load_rate, которая при вызове печатает строку…
  4. Sep 29, 2026Post #4902
  5. Sep 26, 2026Развёрнутое пояснение: 1. При создании класса __slots__ разрешает экземплярам хранить атри…
  6. Sep 26, 2026Post #4900
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →