python迭代器概念与应用

1、什么是迭代器协议
  对象需要提供next方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,终止迭代.

2、可迭代对象
  实现了迭代器协议的对象就是可迭代对象(实现方式是,实现iter方法)

3、协议
  协议是一种规定,可迭代对象实现迭代器协议,Python的内置工具(如for,sum,min,max,in),可以使用迭代器协议访问对象,例如文件之所以可以被for循环遍历,就是因为文件对象实现了迭代器协议,也就是说它有next()方法.

4、迭代器
  迭代器对象就是实现了iter() 和 next()方法的对象.

 iter()返回迭代器本身
 next()返回容器的下一个元素,在结尾处引发StopInteration异常
如下:
it = iter(iterable) # 将一个可迭代对象转换为迭代器 next(it) # 获取下一个迭代器中的下一个值 `注意` list dic tuple string 并不是迭代器,它们只是可迭代对象.但是可以通过iter(list)的方法 将它们转换为迭代器.

  你可能会问,为什么list、dict、str等数据类型不是Iterator? 

      这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。
    可以把这个数据流看做是一个有序序列,但 我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。


猜你喜欢

转载自www.cnblogs.com/kevincaptain/p/10435374.html
今日推荐