python学习笔记之基础操作(六)生成器和迭代器

生成器总结
  • 语法上和函数类似:生成器函数几乎和常规函数一样,不同的又两点,
    第一点是返回使用yield关键字,第二点是在连续逻辑内可以多次返回
    这是yield的特点决定的,yield会记住函数执行的位置,下一次调用next函数时会自动从上次返回的位置开始继续执行,因此生成器是无法倒推的。
#生成器函数实例
def test():
	for i in range(10):
		yield i*100
g = test()
for i in range(11):
	print(g._next_())

  • 自动实现迭代协议,上述_next_()函数时自动实现的,不需要手动编写,但
    是需要对生成器函数结束时的异常进行处理,当然,for循环等常见python方法中已经处理了
  • 优点:延迟计算,并且进行实时计算的数据传输,例如上面的例子,我们不 需要计算所有的乘积之后在统一返回一个数组,而是计算一个值就可以返回一个值
#列表生成的方法,需要保存一个巨大的列表,内存大
sum([i for i in range(1000000)])   
#生成器方法,实时传输数据,内存非常小
sum(i for i in range(1000000))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值