1、可迭代对象Iterable:能作用于for循环的
一类是数据集合类型:如:list、tuple、dict、set、str等
一类是生成器
可通过isinstance()函数判断是不是可迭代对象
>>> from collections import Iterable
>>> isinstance([], Iterable)
True
>>> isinstance({}, Iterable)
True
>>> isinstance('abc', Iterable)
True
>>> isinstance((x for x in range(10)), Iterable)
True
>>> isinstance(100, Iterable)
False
2、迭代器Iterator:可以被next()函数调用并不断返回下一个值的对象---惰性计算序列
生成器是一个迭代器对象
数据集合如list、dict、str可通过iter()函数获得一个迭代器对象
Python的Iterator
对象表示的是一个数据流,Iterator对象可以被next()
函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration
错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()
函数实现按需计算下一个数据,所以Iterator
的计算是惰性的,只有在需要返回下一个数据时它才会计算。