Python高级编程笔记-----生成器(generator)

101 阅读1分钟

生成器(generator)

基本解释

如同字面意思,就是不断的生成一个数据,类似于列表生成式,但列表是一开始就给定的,而生成器你不用next()调用下一个数据,你就不知道下一个数据是什么
这样不必创建完整的list,从而节省大量的空间

展现形式

  1. 通过将列表生成式的[]替换成()
  2. 编写生成器函数,使用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()来调用它

参考文献:廖雪峰的官方网站