自动论文生成器 python_python生成器

python生成器

python高级特性

首先, 所有的生成器都是迭代器, 因为生成器完全实现了迭代器的接口。

在python中, 有两种不同的方式提供生成器:

1. 生成器表达式

2. 生成器函数

什么是生成器?

生成器是可以迭代的,但是你 只可以读取它一次 ,因为它并不把所有的值放在内存中,它是实时地生成数据:

>>>mygenerator=(x*xforxinrange(3))

>>>foriinmygenerator:

...print(i)

0

1

4

看起来除了把 [] 换成 () 外没什么不同。但是,你不可以再次使用 for i in mygenerator , 因为生成器只能被迭代一次:先计算出0,然后继续计算1,然后计算4,一个跟一个的…

生成器表达式

虽然,可以使用列表推导来初始化序列类型,但是当列表长度很大的时候, 生成器表达式更适合。

因为列表推导式返回的是一个序列对象, 而生成器表达式返回的是一个生成器对象,正如在生成器中描述的那样,生成器对内存更友好。

详细来说, 生成器表达式背后遵守了迭代器协议,可以逐个地产出元素,而不是先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。前面那种方式显然能够节

省内存。

语法

将列表推导中的[]改为()就是生成器表达式

(exprforiter_variniterableifcond_expr)如果生成器表达式是一个函

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值