在generator内部通过控制n来终止循环好像不太行
Topic source将generator内部的终止代码删去后,使用liao提供的调用代码中包含的终止代码,成功停止。
def triangles():
L=[1]
while True:
yield L
L1=L+[0]
L2=[0]+L
L=[L1[i]+L2[i] for i in range(len(L1))]
return
1)你代码无法终止循环的原因是因为n = n +1没有放进去while 循环里面。
2)L1和L2使用[0]将两个列表错开了再相加,这个数据理解可以的。
def triangle():
L = [1]
while True:
L1 = L + [0]
L2 = [0] + L
L = [L1[i] + L2[i] for i in range(len(L1))]
yield L
if __name__ == '__main__':
for i in triangle():
print (i)
if len(i) > 10:
break
def triangles(max):
n=0
L=[1]
while True:
yield L
L1=L+[0]
L2=[0]+L
L=[L1[i]+L2[i] for i in range(len(L1))]
n=n+1
if n==max:
break
return
这样就能正常终止循环了
- 1
13个望辰
原方案:
通过以下代码调用:
无法正常终止循环。