Python学习之--迭代器、生成器
2016-10-31 22:06
357 查看
迭代器
迭代器是访问集合元素的一种方式。从对象第一个元素开始访问,直到所有的元素被访问结束。迭代器只能往前,不能往后退。迭代器与普通Python对象的区别是迭代器有一个__next__()方法,每次调用该方法可以返回一个元素。迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。适合遍历一些巨大的或是无限的集合。
特点:
1 访问者不需要关心迭代器内部的结构,仅需要通过next()方法去获取下一个内容
2 不能随机访问集合中的某个值,只能从头到尾访问
3 访问到一半时不能回退
4 便于循环比较大的数据集合,省内存
l=iter([1,2,3]) >>> l=iter([1,2,3]) >>> l <list_iterator object at 0x007FB530> >>> print(l.__next__()) 1 >>> print(l.__next__()) 2 >>> print(l.__next__()) 3 >>> print(l.__next__()) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
读文件的时候,采用for line in file:的形式,是按照迭代器的方式进行读,比较节省内存。
生成器
一个函数调用时返回一个迭代器,那么这个函数就叫做生成器。如果函数中包含yield语法,那么这个函数会变成生成器
def consumer(name): print("%s 准备吃包子啦!" %name) while True: baozi=yield print("包子[%s]来了,被[%s]吃了!" %(baozi,name)) def producer(name): c=consumer('A') c2=consumer('B') c.__next__() c2.__next__() for i in range(10): print("%s 做好了2个包子!" %name) c.send(i) c2.send(i) producer('chef')
Code
相关文章推荐
- Python学习之路六---迭代器、生成器
- python中的迭代器和生成器学习
- Python学习之三大名器-装饰器、迭代器、生成器 推荐
- python 学习生成器和迭代器 8皇后问题
- python cookbook第三版学习笔记六:迭代器与生成器
- python开发学习-day04(迭代器、生成器、装饰器、二分查找、正则)
- Python学习笔记(10)-生成器generator和迭代器Iterator
- python学习笔记9-迭代器和生成器整理
- Python学习(三):迭代器、生成器、装饰器、递归、算法、正则
- Python高级特性(切片 迭代 列表生成式 生成器 迭代器)学习笔记
- Python 学习笔记 迭代器和生成器
- python 学习2:生成器,迭代器,装饰器
- python学习笔记-函数式编程、迭代器和生成器
- Python学习笔记——迭代器和生成器
- 深入学习python(二) 迭代器(Iterator)和生成器(Generate)
- Python学习笔记--迭代器&生成器
- python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化
- Python学习之迭代对象、迭代器、生成器
- python核心高级学习总结8------动态性、__slots__、生成器、迭代器、装饰、闭包
- Python3学习笔记:迭代器与生成器