|
|
|
|
移动端

2.2.1 迭代器

《Python高级编程(第2版)》第2章语法最佳实践——类级别以下,本章将介绍现在这门语言的语法中最重要的元素,以及它们的使用技巧。本节为大家介绍迭代器。

作者:张亮/阿信 译来源:人民邮电出版社|2018-01-29 18:23

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


2.2.1 迭代器

迭代器只不过是一个实现了迭代器协议的容器对象。它基于以下两个方法。

__ next __:返回容器的下一个元素。

__ iter __:返回迭代器本身。

迭代器可以利用内置的iter函数和一个序列来创建。看下面这个例子:

  1. >>> i = iter('abc')  
  2. >>> next(i)  
  3. 'a'  
  4. >>> next(i)  
  5. 'b'  
  6. >>> next(i)  
  7. 'c'  
  8. >>> next(i)  
  9. Traceback (most recent call last):  
  10.   File "< input >", line 1, in < module > 
  11. StopIteration 

当遍历完序列时,会引发一个StopIteration异常。这样迭代器就可以与循环兼容,因为可以捕获这个异常并停止循环。要创建自定义的迭代器,可以编写一个具有__ next __方法的类,只要这个类提供返回迭代器实例的__ iter __特殊方法:

  1. class CountDown:  
  2.        def __init__(self, step):  
  3.            self.step = step  
  4.        def __next__(self):  
  5.            """Return the next element."""  
  6.            if self.step < = 0:  
  7.                raise StopIteration  
  8.            self.step -1 
  9.            return self.step  
  10.        def __iter__(self):  
  11.            """Return the iterator itself."""  
  12.            return self 

下面是这个迭代器的用法示例:

  1. >>> for element in CountDown(4):  
  2. ...     print(element)  
  3. ...  
  4. 3  
  5. 2   
  6. 1   

迭代器本身是一个底层的特性和概念,在程序中可以不用它。但它为生成器这一更有趣的特性提供了基础。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

《广域网》

在开始学习WAN资料时,我经常面对资料深度不够或者为电气工程师编写的书。另外,在看了几本书,并且对Internet进行了研究以后,我觉得应当...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊