小说python2和python3的差异一文中,
在说明range,xrange,map的差异时
提到Iterable和Iterator,有朋友反馈没留意过这两个东东,
这里就小说一把,认识一下
Iterable...call by need的方式
不是与list等集合数据类型一样一次性将所有元素加载到内存中
它还具备下面几个特点:
不能向后移动
不能回到开始
只能一次迭代
不能切片和索引
?...无法切片和索引
迭代器应用
节省内存
典型应用:
操作大文件
read readlines 方法都是将文件一次读到内存中,
文件太大,就会造成内存溢出
通常的做法是
1with open(filename...适用场景:
不关心元素的随机访问
元素的个数不确定
后记
迭代器在python中是个很重要的对象,很多对象都具有迭代器的特性,或是其子对象
生成器是迭代器的一个重要子对象
而python的协程与生成器又有千丝万缕的关系...迭代器->生成器->协程层层递进
迭代器作为一个基础,清楚的认知是很有必要的----