# -*- coding:utf-8 -*-
def triangles():
#i = 1
j = 0
L1 = []
L2 = []
S1 = 0
while j < 10:
s = 0
for i in L1:
S1 = s + i
s = i #記錄上個循環i的值
L2.append(S1)
L2.append(1)
yield L2 #生成器 返回L2 list 列表的值
L1 = L2[:] #將L1指向L2 變成上一次循環的list
L2 = [] #L2保存的是當次循環的list 初始化她
j = j + 1
n = 0
for x in triangles():
print x
n = n + 1
if n == 10:
break
函数是顺序执行,遇到return
语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行。
本文出自 “lakers” 博客,请务必保留此出处http://rachelxie.blog.51cto.com/9080122/1732166
原文:http://rachelxie.blog.51cto.com/9080122/1732166