1. 迭代器
- 迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复 都是基于上一 次结果而来迭代提供了一种通用的 不依赖索引 的迭代取值方式
- 可迭代对象:
可以用 for 循环遍历的对象都是可迭代对象。
str,list,tuple,dict,set 等都是可迭代对象。
generator (生成器 和 yield 的生成器函数) 也是可迭代对象。 - 判断是否可迭代
是否有内置的__iter__方法
isinstance(obj, Iterable)
- 迭代器
有内置的__iter__()方法的对象,执行迭代器的__iter__()方法得到的依然是迭代 器本身
有内置的__next__()方法的对象,执行该方法可以不依赖索引取值
问题:可迭代的对象一定是迭代器吗? False
- iter()
可以被 next() 函数调用并不断返回下一个值的对象称为迭代器:Iterator。那我们可 以通过 iter() 方法将可迭代的对象,转为迭代器。 - 注意:
迭代器不可以通过下标取值,而是使用 next() 或者 next() 。但是只要超出 范围则直接报错 StopIteration 。
next() 只能顺延调用,不能往前。
- 可迭代对象与迭代器区别
可用于 for 循环的都是可迭代对象
作用于 next() 都是迭代器对象
list、dict、str 等都是可迭代的但不是迭代器,因为 next() 函数无法调用它们。
可以通过 iter() 函数将可迭代对象 转为迭代器
python 的 for 循环本质就是通过不断调用 next() 函数实现的