展开全部
triangles里用到了yield,yield 的作用就是把一个e68a84e8a2ad3231313335323631343130323136353331333361306437函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 triangles(5) 不会执行 triangles函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield L 时,triangles函数就返回一个迭代值,下次迭代时,代码从 yield L 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。
1 那个2去哪了
你看else语句 L1 = [1,1]每次L都是基于这个L1生成的 比如L=[1,2,1] 那么下一个L1就是[1,3,3,1],下一句L = L1 所以每次都是新的L1生成
2 画红圈的地方应该是和L1.insert(i,L[i-1+i])意思一样
不一样,插入的值是两个数的和def triangles(max):
L = [1]
n = 0
while(n
n = n+1
if(n == 2):
L=[1,1]
yield L
else:
i = 1
L1 = [1,1]
while(i<=n-2):
L1.insert(i,L[i-1]+L[i])
i=i+1
L = L1
yield L
for n in triangles(5):
print n