在 anaconda 环境中的 Jupyter Note 中运行 Python 3 代码。
要解决的问题:想用生成器 generator 生成杨辉三角形
我的代码片段:
```python
def triangles():
result = [1]
while True:
yield result
resultcpy = result
result = []
resultcpy.insert(0,0)
for i in list(range(len(resultcpy)-1)):
result.append(resultcpy[i]+resultcpy[i+1])
result.append(1)
return "done"
遇到的问题: 当我运行以下代码时
```python
g = triangles()
next(g)
next(g)
next(g)
能正确输出结果:第一次结果为 [1];第二次结果为 [1,1];第三次结果为 [1,2,1]。但是当运行以下代码时,结果是错误的
n = 0
results = []
for t in triangles():
results.append(t)
n = n + 1
if n == 10:
break
for t in results:
print(t)
错误结果为
[0, 1]
[0, 1, 1]
[0, 1, 2, 1]
[0, 1, 3, 3, 1]
[0, 1, 4, 6, 4, 1]
[0, 1, 5, 10, 10, 5, 1]
[0, 1, 6, 15, 20, 15, 6, 1]
[0, 1, 7, 21, 35, 35, 21, 7, 1]
[0, 1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
猜测和 list 是可变的有关。自己写的代码既不简介也不美观,尽管网上有正确答案,但是还是不知道本质原因,很困惑,在此请各位赐教,感谢!