可使用for进行迭代的数据类型分为以下两种:
- 集合数据类型:如 dict、list、tuple、set、str 等;
- generator:包括生成器和 yield 的 generator function;
Python 的 Iterator 对象表示的是一个数据流,Iterator 对象可以被 next() 函数调用并不断返回下一个数据,直到没有数据时抛出 StopIteration 错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过 next() 函数实现按需计算下一个数据,所以 Iterator 的计算是惰性的,只有在需要返回下一个数据时它才会计算。
把 list、dict、str 等 Iterable 变成 Iterator 可以使用 iter() 函数。