创建生成器的方法:
1、把一个列表生成式的[] 换成()即可。
2、用yield生成生成器函数。
生成器的遍历输出可以用next(),但最好用for 循环,避免出现StopIteration错误。
例如输出杨辉三角
def triangles():
for i in range(1,10):
l_i = [1]
if i == 1 :
c_l = l_i
yield l_i
else:
for j in range(len(c_l)-1):
l_i.append(c_l[j] + c_l[j+1])
l_i.append(1)
c_l = l_i
yield l_i
if __name__ == "__main__":
tri = triangles()
for ll in tri :
print(ll, '\r\n')
输出结果如下:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
生成器是一种特殊的迭代器,比迭代器更高校,因其自动创建了iter()和next()函数。