python生成器、迭代器、可迭代对象
2019-04-10 本文已影响0人
Eren_Jaeger
-
可迭代对象
-
迭代器
-
生成器
1.可迭代对象
可以被for循环遍历的对象成为可迭代对象,其中包括list、str、tuple、dict、set、generator都属于可迭代对象,这是属于一个很大的概念范畴
>>> generator1 = (i for i in range(10))
>>> next(generator1)
0
>>> next(generator1)
1
>>> next(generator1)
2
>>> dict1 = {'A': 1, 'B': 2}
>>> next(dict1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict' object is not an iterator
>>>
2.迭代器
可以被next函数调用、直到没有数据时抛出StopIteration错误的可迭代对象成为迭代器(iterator),迭代器是一个数据流,我们可以知道它是有序的,但是我们不知道它的长度。iterator可以表示很大的数据流,可以是全体自然数,对于list来说可做不到那么多内存给它用。
如何将list、tuple、dict、str、set等数据转换成迭代器?
可以使用iter()函数转换,比如:
>>> tuple1 = (1, 2, 3,)
>>>
>>> next(tuple)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'type' object is not an iterator
>>>
>>>
>>> next(iter(tuple1))
1
>>>
3.生成器
生成器(generator)属于iterator的对象,可以有两种写法:一种是把列表生成式的[]改成()就变成了generator,另一种则是在函数中使用yield函数。具体生成器怎样创建,我在上一篇文章中有写