迭代器

迭代器python2.2中的溶液,它提供了一个接口类序列是序列对象类。随着迭代器可以在对象序列重复,是不是因为他表现出行为的序列。当使用for循环迭代在Python的对象,调用者几乎不能告诉他的迭代是一个迭代对象或对象的序列,因为Python让他(迭代器)作为操作序列。

如何迭代

基本上迭代器是一个对象,但该对象具有特殊的方法(代替下一个python3方法的使用)。当你使用一个for循环遍历整个对象的时候,对象将自动调用此方法,并得到下一个项目。当所有的项目完全去除抛出一个异常,这是不是发生了错误,但要告诉外部主叫迭代完成,外部调用者试图捕获异常做进一步的处理。

但是,迭代器是有限的,例如,

  • 你不能后退
  • 不回到开始
  • 您不能复制一个迭代。
    因此,再次重新迭代只能生成一个新的迭代器对象。

获取一个迭代器

  1. 对于Python可以内置迭代(可迭代)的目的可以通过相应的迭代器对象的内置函数来获得。

这将得到相应的迭代器对象的列表。

我们看一下迭代对象的属性:

这种迭代可见对象具有这两种方法的两个特殊的方法和成员是支持协议需要实现迭代的方式。其中,该方法返回迭代对象本身,该方法返回容器的下一个元素,直到结束抛出。

我们来测试一下这个对象的这两种方法:

返回的对象是一个迭代器对象本身。

该方法返回该值,直到所述容器的端。

2。创建迭代器对象

除了使用内置的功能,将对象转换成相应的序列迭代器,我们可以实现迭代器协议创建自己的迭代器对象,实现了迭代器协议是实现和类方法。

现在我写的具有相同行为的迭代器:

我们可以用一个for循环遍历迭代器:

对于迭代器对象,使用for循环通过整个阵列实际上是语法糖,或通过他内部实现对象方法调用。
事实上,他的作品里面应该是这样的:

迭代器支持多个迭代

正如前面提到的迭代器对象不支持重新迭代,是一样的迭代器对象得不能再重复,如:

可见,当我一个迭代的重新迭代将只返回空列表,因为循环异常的直接捕获。如果您想再次产生迭代的列表,如果只有重新生成一个新的迭代器对象。
为了解决这个问题,迭代可以分别定义的对象(iterables)和迭代器对象(迭代)。

插入小插曲:

对于iterables和迭代器对象,我的理解是:
Iterables的目的是实现一种方法可返回一个迭代器对象。
Iterator对象目的是实现他返回迭代器对象本身的过程。

我修改了代码,如下所示:

为了知道何时调用Python方法,我添加了标签做printf函数。

现在,这两个类到当前的空间:

甲可见对象(实现),b是对象(实现)。

让我们来看看这样做是不是重复了许多次迭代的:

迭代是重复,从我们可以看到一些到输出

  1. 当我们使用迭代方法工具对象迭代是第一次调用,返回一个迭代对象的实例。
  2. 输出值的下一个方法,然后遍历时间被称为。
    这也许可以解释为什么这个过程可以重复很多次,因为每次迭代工具迭代时间将调用返回一个新的迭代器对象,这相当于创建多个迭代器,自然也就出现反复迭代!

可变对象和迭代器

在迭代变量的目标时间,序列迭代器刚记录电流达到几个要素的顺序所以,如果你改变元素的序列中的迭代过程。更新将立即作出反应,以迭代的条目上。
我写了一个测试读取,确实:

可见上述的迭代的侧边缘删除列表的元素,但在端部而仅输出,这就是为什么?
因为迭代器只记得在列表中的前几个元素,则当第0个元素时,输出1将然后删除1,它变成一个列表

但迭代记住我是在第二位置的上方的点到列表在第二位置,它是3,然后输出3。
所以,最终,输出1,3,5。
如果我猜得不错,该列表的其余部分应该是唯一的2和4:

真!

以上是我在Python迭代器的条款小小的总结。


本文链接:Python 迭代器小结

您可能也会喜欢

友情链接:

心经唱诵 大悲咒注音 经文