迭代器

  python最强劲的作用之一,访问结合元素的一种方法。迭代器是一个能够记牢解析xml的部位的对象 ,迭代器对象从结合的第一个元素刚开始访问,直至全部的元素被访问完完毕,迭代器只有向前不容易倒退 。

  迭代器有两个基础的方式:

  • iter()
  • next()

  字符串数组 ,目录和元组对象都可以用以建立迭代器

>>> list=[1,2,3,4] >>> it = iter(list) # 建立迭代器对象 >>> print (next(it)) # 輸出迭代器的下一个元素

建立一个迭代器

  把一个类做为一个迭代器应用必须在类中完成2个方式 __iter__() 与 __next__() 。__iter__() 方式回到一个独特的迭代器对象, 这一迭代器对象完成了 __next__() 方式并根据 StopIteration 出现异常标志迭代更新的进行。__next__() 方式会回到下一个迭代器对象 。

StopIteration

  StopIteration 出现异常用以标志迭代更新的进行,避免出现不断循环的状况 ,在 __next__() 方式中我们可以设定在进行特定循环系统频次后开启 StopIteration 出现异常来完毕迭代更新。

1 class MyNumbers: 2 def __iter__(self): 3 self.a = 1 4 return self 5 6 def __next__(self): 7 if self.a <= 20: 8 x = self.a 9 self.a = 1 10 return x 11 else: 12 raise StopIteration 13 14 myclass = MyNumbers() 15 myiter = iter(myclass) 16 17 for x in myiter: 18 print(x)
  • 由这一编码得知for循环能够等于持续启用next()
  • next()涵数內部的x是为了更好地纪录回到一个初值

制作器

  在 Python 中,应用了 yield 的涵数被称作制作器(generator)。跟一般涵数不一样的是,制作器是一个回到迭代器的涵数 ,只有用以迭代更新实际操作 ,更通俗一点了解制作器就是一个迭代器 。

  在启用制作器运作的全过程中,每一次碰到 yield 时涵数会中止并储存当今全部的运作信息内容,回到 yield 的值, 并在下一次实行 next() 方式时从所在位置再次运作。启用一个制作器涵数 ,回到的是一个迭代器对象。

1 import sys 2 3 def fibonacci(n): # 制作器涵数 - 斐波那契 4 a, b, counter = 0, 1, 0 5 while True: 6 if (counter > n): 7 return 8 yield a 9 a, b = b, a b 10 counter = 1 11 f = fibonacci(10) # f 是一个迭代器,由制作器回到形成 12 13 while True: 14 try: 15 print (next(f), end=" ") 16 except StopIteration: 17 sys.exit()

 

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归趣快排营销www.seoguRubloG.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系✚Qq61910465