1、什么是迭代器 - What
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。
以下代码是用python3 做为工作环境来实现的
从上面代码我们可以看出什么,
安排一些元素放在迭代器在里面,但只用用的时候才会创建一些临时区,
一旦遍历结束则临时区清空,再遍历就失效了。
所以说迭代器能够减少内存的开销,只用用的时候才会创建,
而且是一块一块的,就如上传视频,可以一段一段上传,也可以整个一下子都上传,
而迭代器就属于一段一段的。
2
迭代器的“Why”知识点
可以看看它的内存占用:
使用python2:
返回结果:
56
8000064
32
使用python3:
返回值:
32
48
这里有个问题:为什么在Python2跟Python3的运行结果相差这么大呢?
这是因为python3内部机制已经将range转换成了一个迭代器了。
这里可以看的出来适合大的数据,比如好几个G的数据, 使用了迭代器后,内存使用大幅度减少,这是迭代器最大的优点。
总结下:
我们简单说迭代器就是访问集合元素,迭代器就是有一个next()方法的对象,而不是通过索引来计数的。
那么我们怎么能访问迭代器里面的元素呢? 我会在下面迭代器的How的知识点讲解。
3
迭代器的“How”知识点
迭代器有两个方法 ,分别是iter()和next()方法
这两个方法是迭代器最基本的方法,一个用来获得迭代器对象,一个用来获取容器中的下一个元素。
这两个方法已经在迭代器的what知识点里面讲解过了。
itertools是python提供的非常高效创建与使用迭代器的模块
我们知道迭代器是不支持索引的,原因就是索引需实现明元素确占用的内存地址,而迭代器是用到元素的时候才会创建。如下:
这个时候可以使用内建函数enumerate(),这个函数很重要。
它的使用方法是:
enumerate(iterable[, start]) -> iterator for index, value of iterable
举个栗子:
我们可以看看这个函数的源码是怎么写的:
总结:
我们简单说迭代器就是访问集合元素,迭代器就是有一个next()方法的对象,而不是通过索引来计数的
喜欢本文的小伙伴或者觉得本文对你有帮助可以点播关注或转发。
最后
小编精心推荐一个学习Python的好去处,如果有想学Python的,或者想与小编交流的小伙伴可以加群959997225!
本文来自网络,如有侵权,请联系小编删除!