首页 > 编程 > Python > 正文

Python 迭代器与可迭代对象

2019-11-08 19:34:19
字体:
来源:转载
供稿:网友

迭代器是Python中非常重要的一个概念,很多的操作都是基于迭代器去做的, 比如说我们最常用的 for 循环,还有生成器其实也是一个迭代器,所以说迭代器也不是什么神秘的东西,主要需要区分清楚两个概念: 迭代器,可迭代对象。这里我们对迭代相关的知识做一个简单的梳理。

iter函数


其实系统内置的iter 函数只是调用对象的__iter__方法,这个方法按照协议会返回一个迭代器,使得for循环这样的语法结构能够进行下去。

可迭代对象


实现了__iter__ 方法,就是可以迭代的可以返回自身作为迭代器,也可以返回其他一个迭代器对象使用 For 循环的时候其实也是调用iter函数使对象返回一个迭代器,再使用迭代器进行循环

迭代器


python2: 实现了 next 方法python3: 实现了 __next__ 方法

next函数


调用迭代器的 next 或__next__方法,一直到结束对象函数返回 StopIteration 异常

迭代器与可迭代对象联系


其实没有什么必要联系一个对象可以同时既是可迭代对象又是迭代器,只要方法里有 next(python2) 或__next__(python3) 又有 __iter__ 方法,惯用的做法是__iter__方法返回自己作为迭代器。

NOTE


迭代器是单向的迭代器转化为list或tuple之后就已经迭代到达尾端,不可再继续用了
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表