def yanghui():
L = [1]
print(L)
while True:
yield L
L=[1]+[L[i]+L[i+1] for i in range(len(L)-1)]+[1]
print(L)
pass
n=0
for m in yanghui():
n=n+1
if n==5:
break
image.png
因為遇到y(tǒng)ield語句返回烙荷,此時print [1]
再次執(zhí)行時從上次返回的yield語句處繼續(xù)執(zhí)行
此時L=[1],len(L)=1
L=[1]+[L[i]+L[i+1] for i in range(0)]+[1]
[L[i]+L[i+1] for i in range(0)] (因為range(0)所以不計算)
L=[1]+[1]
當(dāng) L=[1]+[1],len(L)=2
L=[1]+[L[i]+L[i+1] for i in range(1)]+[1]
[L[i]+L[i+1] for i in range(1)]=[L[0]+L[1]]=[2]
L=[1]+[2]+[1]
當(dāng) L=[1]+[2]+[1],len(L)=3
L=[1]+[L[i]+L[i+1] for i in range(2)]+[1]
[L[i]+L[i+1] for i in range(2)]=[L[0]+L[1]]=[3]
=[L[1]+L[2]]=[3]
L=[1]+[3]+[3]+[1]
當(dāng) L=[1]+[3]+[3]+[1],len(L)=4
L=[1]+[L[i]+L[i+1] for i in range(3)]+[1]
[L[i]+L[i+1] for i in range(3)]=[L[0]+L[1]]=[4]
=[L[1]+L[2]]=[6]
=[L[2]+L[3]]=[4]
L=[1]+[4]+[6]+[4]+[1]