python数据结构之迭代器与可迭代对象
可迭代对象
可以利用 for 循环的对象,都叫可迭代对象。
譬如我们前面学过的 列表、元组、字典、字符串等都是可迭代对象
是否可迭代
from collections.abc import Iterable
isinstance([0, 1, 2], Iterable) # 列表
这种方法不准确,还是应该用for循环,因为isinstance的判定是看对象是否有__iter__方法。
可迭代协议
第一种场景: 如果一个对象内部实现了 iter() 方法 ,并返回一个迭代器实例,那么该对象就是可迭代对象
第二种场景: 假设一个对象没有实现 iter() ,Python 解释器 getitem() 方法获取元素,如果可行,那么该对象也是一个可迭代对象。
什么是迭代器
当你对一个可迭代对象使用 iter 函数后,它会返回一个迭代器对象,对于迭代器对象,我们可以使用 next 函数,去获取元素,每执行一次,获取一次,等到全部获取完毕,会抛出 StopIteration 提示无元素可取。
迭代器协议
对比可迭代对象,迭代器的内部只是多了一个函数而已 — next()
正因为有了它,我们才可以用 next 来获取元素。
迭代器,是在可迭代的基础上实现的。要创建一个迭代器,我们首先,得有一个可迭代对象。
本文来自博客园,作者:27岁的太阳,转载请注明原文链接:https://www.cnblogs.com/isxjj/p/16106272.html