python学习笔记七——生成器

通过列表生成式,我们可以直接创建一个列表。但是列表中元素过大且我们仅需访问列表中的某些元素时,列表生成式就造成了极大的资源浪费。
生成器主要通过一个yield语句与生成式区分,该语句可以将整个代码段中断,然后将一个结果传回去,然后再从中断的地方继续执行。
下面的代码段实现了一个杨辉三角:

def tag():
    N=[1]
    while True:
        yield N
        N=[1]+[N[i-1]+N[i] for i in range(len(N)-1)]+[1]


g = tag()
for t in range(6):
    print(next(g))

可以看到这段代码的核心在于N=[1]+[N[i-1]+N[i] for i in range(len(N)-1)]+[1],N是一个list,对[1]+表示append()函数,就是在list中再添加元素,这里将杨辉三角的每一行都看成一个list,每计算出一行的元素之后,立即输出,然后在计算下一行的元素时将其覆盖。
在这里,要特别注意用python 生成器实现杨辉三角并没有用到二维数组,也并不是将数组中所有元素都计算出来之后再循环输出的。生成器是在代码执行过程中不断地向外输出值的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值