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

黄海龙
  • 3
新手上路,请多包涵

这是一个杨辉三角的生成器,请教为什么生成器的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()))

image.png

回复
阅读 312
1 个回答
✓ 已被采纳

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

应该这样:

n = triangles()
print(next(n))
print(next(n))
print(next(n))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏