Почему это работает:
def even_gen():
n = 0
while True:
yield n
n += 2
evens_ = even_gen()
evens = list(next(evens_) for _ in range(5))
#[0,2,4,6,8]
Но это не так:
def even_gen():
n = 0
while True:
yield n
n += 2
evens = list(next(evens_gen()) for _ in range(5))
#[0,0,0,0,0]
Единственное отличие заключается в перемещении генератора внутри функции списка. Я нахожу это очень странным, что нам нужно сначала присвоить его переменной, а затем он работает ...
В чем причина?