Python 迭代器
python 迭代器,可作用于for循环的类型一:
list tuple dict set str
还有数据结构generator 统称为:iterable
可以使用isinstance()判断一个对象是否为iterable对象
>>> from collections import iterable
>>> isinstance([],iterable)
true
>>> isinstance({},iterable)
true
>>> isinstance((),iterable)
true
>>> isinstance(([]),iterable)
true
>>> isinstance(100,iterable)
false
可以被next()函数调用并不断返回下一个值的对象称为迭代器:iterator(不一定是生成器,但生成器一定是迭代器)
可以通过dir命令,查看对象是否具有__next__
>>> from collections import iterator
>>> isinstance((x for i in range(5)),iterator)
true
>>> isinstance([],iterator)
false
可以把list dict str 等iterable 变成 iterator 通过使用iter()函数(内置函数):
>>> a=[1,2,3]
>>> iter(a)
>>> b=iter(a)
>>> b.__next__()
1
>>> b.__next__()
2
因为python的iterator对象表示的是一个数据流,iterator对象可以被next()函数调用不断返回下一个数据,直到没有数据时,抛出stopiteration错误,可以把这个数据流看作是一个有序序列,但我们不能提前知道序列的长度,只能next()实现按需求计算下一个,所以iterator 的计算是惰性的。
for循环的本质上就是利用next()实现的
文件对象的循环for line in f: 也是如此。
上一篇: 单点登录 Ucenter示例分析
下一篇: 美图秀秀怎样把模糊的图片变清晰?