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函数。具体生成器怎样创建,我在上一篇文章中有写

上一篇下一篇

猜你喜欢

热点阅读