对于python中迭代器和rang()对象的理解
对于python中迭代器和rang()对象的理解
在课堂上学python的时候,很多东西其实并不是很了解,比如迭代器这个东西,只是止于它怎么用,其实不知道它的本质到底是什么,只觉得它是可以不断“一代一代”输出的东西,所以以前以为range这些只要可以用for一代一代拿出来的都可以算,但是随着自学的深入,我又有了新的理解
下面实验探究基于:python3.7.3的jupyter notebook
刚刚接触了generator,知道了他也是可迭代的,就引起了对迭代器的兴趣
那么什么是迭代器呢,查阅了别人的blog和百科之后,我记录如下
迭代是访问一个元素集合的一种方式,从第一个元素知道访问完所有元素,只会向前不会后退。
可迭代对象
可以直接作用于for循环的对象,称为iterable
- 一类是数据的各种集合,list,dict,set,str,tuple···
- 还有一类就是generator(生成器)
迭代器
迭代器(iterator),尤指可以被next()函数调用返回下一个值的对象,list,str,dict,tuple,set这些数据集合不能被调用,不是迭代器,但是所有可迭代对象都可以用iter函数转换成迭代器,迭代器也是可迭代对象。
理论是空洞无趣的,下面通过实验探究一下他们到底是什么
探究
下面的sys.getsizeof()函数是用于获取对象的大小的
1 x
2 [1, 2, 3, 4, 5]
3
4 x
5 next(x)
6 -----------------------------------------------------------------