短短3分钟让你懂得迭代器是什么!

短短3分钟让你懂得迭代器是什么!

1、什么是迭代器 - What

迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。

以下代码是用python3 做为工作环境来实现的

短短3分钟让你懂得迭代器是什么!

从上面代码我们可以看出什么,

安排一些元素放在迭代器在里面,但只用用的时候才会创建一些临时区,

一旦遍历结束则临时区清空,再遍历就失效了。

所以说迭代器能够减少内存的开销,只用用的时候才会创建,

而且是一块一块的,就如上传视频,可以一段一段上传,也可以整个一下子都上传,

而迭代器就属于一段一段的。

2

迭代器的“Why”知识点

可以看看它的内存占用:

使用python2:

短短3分钟让你懂得迭代器是什么!

返回结果:

56

8000064

32

使用python3:

短短3分钟让你懂得迭代器是什么!

返回值:

32

48

这里有个问题:为什么在Python2跟Python3的运行结果相差这么大呢?

这是因为python3内部机制已经将range转换成了一个迭代器了。

这里可以看的出来适合大的数据,比如好几个G的数据, 使用了迭代器后,内存使用大幅度减少,这是迭代器最大的优点。

总结下:

我们简单说迭代器就是访问集合元素,迭代器就是有一个next()方法的对象,而不是通过索引来计数的。

那么我们怎么能访问迭代器里面的元素呢? 我会在下面迭代器的How的知识点讲解。

3

迭代器的“How”知识点

迭代器有两个方法 ,分别是iter()和next()方法

这两个方法是迭代器最基本的方法,一个用来获得迭代器对象,一个用来获取容器中的下一个元素。

这两个方法已经在迭代器的what知识点里面讲解过了。

itertools是python提供的非常高效创建与使用迭代器的模块

短短3分钟让你懂得迭代器是什么!

我们知道迭代器是不支持索引的,原因就是索引需实现明元素确占用的内存地址,而迭代器是用到元素的时候才会创建。如下:

短短3分钟让你懂得迭代器是什么!

这个时候可以使用内建函数enumerate(),这个函数很重要。

它的使用方法是:

enumerate(iterable[, start]) -> iterator for index, value of iterable

举个栗子:

短短3分钟让你懂得迭代器是什么!

我们可以看看这个函数的源码是怎么写的:

短短3分钟让你懂得迭代器是什么!

总结:

我们简单说迭代器就是访问集合元素,迭代器就是有一个next()方法的对象,而不是通过索引来计数的

喜欢本文的小伙伴或者觉得本文对你有帮助可以点播关注或转发。

最后

小编精心推荐一个学习Python的好去处,如果有想学Python的,或者想与小编交流的小伙伴可以加群959997225!

本文来自网络,如有侵权,请联系小编删除!

猜你喜欢

转载自blog.csdn.net/weixin_44020598/article/details/85217727