小说python2和python3的差异一文中,
在说明range,xrange,map的差异时
提到和,有朋友反馈没留意过这两个东东,
这里就小说一把,认识一下
Iterable和Iterator
: 可迭代对象
直接作用于for循环的对象统称为可迭代对象
如 等集合数据类型
还有 等迭代器或是迭代器子类
: 迭代器
官方说明
被next()函数调用并不断返回下一个值的对象
本质上是实现了,方法(python2是,方法)
相互关系:
对于众多的对象,
实在不知道是什么类型就这么判断下吧
迭代器的特性
最大特点是延迟计算(lazy evaluation)方式返回元素,按需调用的方式
不是与list等集合数据类型一样一次性将所有元素加载到内存中
它还具备下面几个特点:
不能向后移动
不能回到开始
只能一次迭代
不能切片和索引
一次迭代
无法切片和索引
迭代器应用
节省内存
典型应用:
操作大文件
方法都是将文件一次读到内存中,
文件太大,就会造成内存溢出
通常的做法是
适用场景:
不关心元素的随机访问
元素的个数不确定
后记
迭代器在python中是个很重要的对象,很多对象都具有迭代器的特性,或是其子对象
生成器是迭代器的一个重要子对象
而python的协程与生成器又有千丝万缕的关系
迭代器->生成器->协程层层递进
迭代器作为一个基础,清楚的认知是很有必要的
下面的是我的公众号二维码图片,欢迎关注我。
领取专属 10元无门槛券
私享最新 技术干货