Python高级编程--迭代器

来源:互联网 发布:数据库处理查询的步骤 编辑:程序博客网 时间:2024/06/03 13:02

定义

迭代是Python最强大的功能之一,是访问集合元素的一种方式。。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

1.可迭代对象

可以直接作用于for循环的数据类型有以下几种:

一类是集合数据类型,如list、tuple、dict、set、str等;

一类是generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。

2. 判断是否可迭代

可以使用 isinstance() 判断一个对象是否是 Iterable 对象:
这里写图片描述
而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。

3. 迭代器

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

可以使用isinstance()判断一个对象是否是Iterator对象:
这里写图片描述

4.iter()函数

iter() 函数用来生成迭代器。
语法:

iter(object[, sentinel])

参数:
object – 支持迭代的集合对象。
sentinel – 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。

返回值:迭代器对象。

生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。

把list、dict、str等Iterable变成Iterator可以使用iter()函数:
这里写图片描述

总结:
 • 凡是可作用于 for 循环的对象都是 Iterable 类型;
 • 凡是可作用于 next() 函数的对象都是 Iterator 类型
 • 集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象。
 • 目的是在使用集合的时候,减少占用的内容。

原创粉丝点击