В версии Python 3.3 и выше есть расширенный синтаксис для оператора
yield, который делает возможным делегирование работы подгенератору с помощью конструкции
from генератор. В простых ситуациях он эквивалентен выдаче в цикле
for — в следующем коде вызов
list заставляет генератор выпустить все свои значения, а включение в круглых скобках является генераторным выражением:
def both(N):
for i in range(N): yield i
for i in (x ** 2 for x in range(N)): yield i
print(list(both(5))) # [0, 1, 2, 3, 4, 0, 1, 4, 9, 16]