迭代器
迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
直接作用于 for 循环的对象统称为可迭代对象: Iterable
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
from collections.abc import Iterator
def is_iterator(obj):
res = isinstance(obj, Iterator)
if res:
print("是迭代器对象")
else:
print("不是迭代器对象")
is_iterator([])
is_iterator({})
is_iterator('123')
不是迭代器对象
不是迭代器对象
不是迭代器对象
Python的 Iterator 对象表示的是一个数据流,Iterator对象可以被 next() 函数调用并不断返回下一个数据,直到没有数据时抛出 StopIteration 错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过 next() 函数实现按需计算下一个数据,所以 Iterator 的计算是惰性的,只有在需要返回下一个数据时它才会计算
所有可作用于 for 循环的对象都是 Iterable 类型;可作用于 next() 函数的对象都是 Iterator 类型,它们表示一个惰性计算的序列;集合数据类型list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象。
is_iterator(iter([1,2,3]))
是迭代器对象