5、迭代器
由之前的生成器可知,for
循环用于可迭代对象:Iterable
。包括集合数据类型: list、tuple、dict、set、str 等,以及两种生成器。判断迭代器,使用 isinstance(type, Iterable) 。还有的是,可以被next()
函数调用并不断返回下一个值的对象称为迭代器:Iterator
。注意定义区分:生成器都是Iterator
对象,但list
、dict
、str
虽然是Iterable(可迭代的)
,却不是Iterator(迭代器)
。
理解:Python的Iterator
对象表示的是一个数据流,Iterator对象可以被next()
函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration
错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()
函数实现按需计算下一个数据,所以Iterator
的计算是惰性的,只有在需要返回下一个数据时它才会计算。