您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: