每天学点Python之Iterator

作者:弋江区易采办公设备经营部  发布时间:2017-09-09 10:19:43
每天学点Python之Iterator 每天学点Python之Iterator

我们经常需要遍历一个对象中的元素,在Python中这种功能是通过迭代器来实现的。

原理

每一个迭代器可以通过反复调用迭代器的__next__()方法来返回创建该迭代器的对象中的后继值。当没有可用数据时,产生一个StopInteration异常。此时,迭代器对象被耗尽,之后再调用 __next__()方法只会再次产生StopInteration异常。需要访问的对象要求包含一个__iter__()方法,用于返回迭代器对象,如果对象就实现了迭代器方法,就可以返回对象本身。

使用

我们可以通过调用iter()方法来返回对象的迭代器:

>>> i = iter("hello") >>> i.__next__() 'h' >>> next(i) 'e' >>> next(i) 'l' >>> next(i) 'l' >>> next(i) 'o' >>> next(i) Traceback (most recent call last): File "", line 1, in StopIteration

对于Python中常见的一些数据类型,如元组、列表、字典等都已经自己实现了迭代器功能,这使得它们能在for循环中正常工作:

>>> for i in (2,3,1): ... print(i) ... 2 3 1 自定义

如果我们要求自定义访问对象中的数据,那该如何做呢,我们需要实现__iter()__和__next()__方法,下面我们给出自己的对象,实现一个简易的计时器功能:

class CountDown: def __init__(self, start): self.count = start def __iter__(self): return self def __next__(self): if self.count

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网页设计 https://www.feimao666.com

  • 上一篇:【Web API系列教程】3.2 — 实战:处理数据(添加模型
  • 下一篇:最后一页
  •