为什么这样做:
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]
Run Code Online (Sandbox Code Playgroud)
但这不会:
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]
Run Code Online (Sandbox Code Playgroud)
唯一的区别是在列表函数内移动生成器。我发现我们需要首先将它分配给一个变量,然后它才能工作,这是非常奇怪的......
什么原因?
| 归档时间: |
|
| 查看次数: |
35 次 |
| 最近记录: |