生成器(generator)
基本解释
如同字面意思,就是不断的生成一个数据,类似于列表生成式,但列表是一开始就给定的,而生成器你不用next()调用下一个数据,你就不知道下一个数据是什么
这样不必创建完整的list,从而节省大量的空间
展现形式
- 通过将列表生成式的[]替换成()
- 编写生成器函数,使用yield关键字
!!!调用generator函数会创建一个generator对象,多次调用generator函数会创建多个相互独立的generator
代码实现
import copy
# 杨辉三角
def triangles(num: int):
l0 = l1 = []
for n in range(num):
l1.clear()
for k in range(n + 1):
if k == 0 or k == n:
l1.append(1)
else:
l1.append(l0[k - 1] + l0[k])
l0 = copy.deepcopy(l1)
yield l1
for i in triangles(6):
print(i)
通过生成器函数来返回一个生成器,然后用for循环或者next()来调用它
参考文献:廖雪峰的官方网站