您的位置:首页 > 编程语言 > Python开发

Python 迭代器与可迭代对象

2017-02-16 10:45 344 查看
迭代器是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之后就已经迭代到达尾端,不可再继续用了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: