python数据结构之迭代器与可迭代对象

可迭代对象

可以利用 for 循环的对象,都叫可迭代对象。

譬如我们前面学过的 列表、元组、字典、字符串等都是可迭代对象

是否可迭代

from collections.abc import Iterable

isinstance([0, 1, 2], Iterable) # 列表 这种方法不准确,还是应该用for循环,因为isinstance的判定是看对象是否有__iter__方法。

可迭代协议

第一种场景: 如果一个对象内部实现了 iter() 方法 ,并返回一个迭代器实例,那么该对象就是可迭代对象

第二种场景: 假设一个对象没有实现 iter() ,Python 解释器 getitem() 方法获取元素,如果可行,那么该对象也是一个可迭代对象。

什么是迭代器

当你对一个可迭代对象使用 iter 函数后,它会返回一个迭代器对象,对于迭代器对象,我们可以使用 next 函数,去获取元素,每执行一次,获取一次,等到全部获取完毕,会抛出 StopIteration 提示无元素可取。

迭代器协议

对比可迭代对象,迭代器的内部只是多了一个函数而已 — next()

正因为有了它,我们才可以用 next 来获取元素。

迭代器,是在可迭代的基础上实现的。要创建一个迭代器,我们首先,得有一个可迭代对象。

posted @ 2022-04-06 14:36  27岁的太阳  阅读(78)  评论(0编辑  收藏  举报