pyhton初学者关于生成器的疑问

这是一个杨辉三角的生成器,请教为什么生成器的next没有变化,
如果我把生成器里的yield L换成pre,就可以正常生成,这是为什么呢?

代码如下:

def triangles():

L = [1]

pre = L

while True:

yield L

for i in range(1, len(L)):

L[i] = pre[i] + pre[i-1]

L.append(1)

pre = L[:]

print(next(triangles()))

print(next(triangles()))

print(next(triangles()))

pyhton初学者关于生成器的疑问


回答:

每次调用 triangle 都会新生成一个从头开始的生成器。

应该这样:

n = triangles()

print(next(n))

print(next(n))

print(next(n))

以上是 pyhton初学者关于生成器的疑问 的全部内容, 来源链接: utcz.com/a/163180.html

回到顶部