[python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3))
2024-09-04 21:27:24
创建一个生成器的方法:
for x in range(1,10000000) ,先生成一个列表[1........9999999] 如果我们只想要后面的几个元素,会发现浪费很多空间。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]
改成()
,就创建了一个generator:
>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x104feab40>
如何获取generator的元素,可以通过next(),就计算出下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。
>>> a = (x for x in range(1,4))
>>> print type(a)
<type 'generator'>
>>> a.next()
1
>>> a.next()
2
>>> a.next()
3
>>> a.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>>
另外一种方法是: for循环
>>> a = (x for x in range(1,4))
>>> for x in a:print x
...
1
2
3
>>>
最新文章
- cocos2dx3.0的CCCallFunc、CCCallFuncN
- 使用Guava EventBus构建publish/subscribe系统
- Android_helloworld
- seo伪原创技术原理分析,php实现伪原创示例
- Qt实现停靠功能
- laravel加入验证码类几种方法 &;&; Laravel引入第三方库的方法
- 学习总结 html图片热点,网页划区,拼接,表单
- JMeter2.13 连接 sql server
- 10款基于HTML5+CSS3实现的超酷源码动画
- ExtJS实战 01——HelloWorld
- Sharepoint中用treeview来显示组织机构的人员状态的webpart
- iOS: plist实例
- 程序员实用的 MySQL sql 语句
- Activity Window View的关系
- 【Java学习笔记之八】JavaBean中布尔类型使用注意事项
- 智能机器人chatbot论文集合
- Failed to start /etc/rc.d/rc.local Compatibility
- sdoi2018旧试题 证明
- loadrunner&#160;脚本优化-关联函数web_reg_save_param()函数详解
- GinKgoCTF-Crypto