小说python中的迭代器

小说python2和python3的差异一文中,

在说明range,xrange,map的差异时

提到和,有朋友反馈没留意过这两个东东,

这里就小说一把,认识一下

Iterable和Iterator

: 可迭代对象

直接作用于for循环的对象统称为可迭代对象

如 等集合数据类型

还有 等迭代器或是迭代器子类

: 迭代器

官方说明

被next()函数调用并不断返回下一个值的对象

本质上是实现了,方法(python2是,方法)

相互关系:

对于众多的对象,

实在不知道是什么类型就这么判断下吧

迭代器的特性

最大特点是延迟计算(lazy evaluation)方式返回元素,按需调用的方式

不是与list等集合数据类型一样一次性将所有元素加载到内存中

它还具备下面几个特点:

不能向后移动

不能回到开始

只能一次迭代

不能切片和索引

一次迭代

无法切片和索引

迭代器应用

节省内存

典型应用:

操作大文件

方法都是将文件一次读到内存中,

文件太大,就会造成内存溢出

通常的做法是

适用场景:

不关心元素的随机访问

元素的个数不确定

后记

迭代器在python中是个很重要的对象,很多对象都具有迭代器的特性,或是其子对象

生成器是迭代器的一个重要子对象

而python的协程与生成器又有千丝万缕的关系

迭代器->生成器->协程层层递进

迭代器作为一个基础,清楚的认知是很有必要的

下面的是我的公众号二维码图片,欢迎关注我。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180406G0625L00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券