Python基础之迭代器

Python028

Python基础之迭代器,第1张

一.什么是迭代器

迭代器是用来迭代取值的工具。

而涉及到把多个值循环取出来的类型有:列表,字符串,元组,字段,集合,打开文件等。通过使用的遍历方式有for···in···,while等,但是,这些方式只适用于有索引的数据类型。为了解决索引取的局限性,python提供了一种 不依赖于索引的取值方式:迭代器

注意:

二.可迭代对象

迭代对象:但凡内置有__iter__方法的都称为可迭代对象

常见的可迭代对象:

1.集合数据类型,如list,tuple,dict,set,str等

2.生成器,包括生成器和带yield的生成器函数。

三.如何创建迭代器

迭代器是一个包含数个值的对象。

迭代器是可以迭代的对象,这意味着您可以遍历所有值。

从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法 __iter__() 和 __next__() 组成。

简而言之,一个类里面实现了__iter__()和__next__()这两个魔法方法,那么这个类的对象就是可迭代对象。

四.迭代器的优缺点

1.优点

2.缺点

五.迭代器示例

另外,如果类Stu继承了Iterator,那么Stu可以不用实现__iter__()方法

遍历迭代器

StopIteration

如果你有足够的 next()语句,或者在 for 循环中使用,则上面的例子将永远进行下去。

为了防止迭代永远进行,我们可以使用 StopIteration语句。

在 __next__()方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误

列表循环的一种方法是,先获取列表的下标,然后迭代列表的每一个下标。

列表循环的另一种方法是直接获取列表的每一个元素。

运行结果如下:

python列表元素只循环了一半数据是正常现象。根据查询有关资料。当弹出一个数字时。i正在迭代的列表变得更短。这就是提前终止的原因。此外。可以使用enumerate。而不是使用x作为单独的变量来跟踪迭代。