目录
什么是迭代器?
在学习for循环的时候,听到了一个词叫可迭代对象。那什么是可迭代对象?
了解后又知道了迭代,可迭代,迭代器这些名词,那这些到底是什么意思呢?
我们先知道为什么for循环不像whlie循环一样,使用初始条件进行累加知道最后的结束条件进行循环,而是搞一个可迭代对象,
而且for循环为什么没有累加条件和结束条件,直接in序列就可以很循环我们想要的数据,而且是值不是索引?
迭代:如图我们把红色当做一个个贴片 我们取贴片的只能取第一个后才能去第二个,以此反复的过程叫迭代,
注意点:一次拿一个,只有上次取了才能取第二个,且每一次重复都在上一次的基础做的,所以每次重复都是有关联性。
可迭代:就是我们的数据可以迭代,不能进行迭代的怎么使用,对吧。
可迭代对象:就是一个可以迭代的对象,例如列表,字典等
迭代器:就是让我们可以迭代的工具
为什么要有迭代?
理解:想列表我们还可以使用whlie循环进行索引进行循环,但是像字典,集合这样的没有索引我们进行遍历呢,这个时候迭代器就出现,迭代器可以做到不使用索引的方式,来遍历没有的且是序列类型的数据,当然还有一个原因,假设我们在进行定义初始化变量的时候,定义成a = 1 ,但是我们需要从0开始,这个时候程序是不会出现问题,但是如果从1开始我们的数据肯定是有问题的,在我们写了很多代码的时候,再来找这个问题,就十分的难找了。
迭代器的优缺点
优点
1、为序列和非序列类型提供了一种统一的迭代取值方式。
2、惰性计算:迭代器对象表示的是一个数据流,可以只在需要时才去调用next来计算出一个值,就迭代器本身来说,同一时刻在内存中只有一个值,因而可以存放无限大的数据流,而对于其他容器类型,如列表,需要把所有的元素都存放于内存中,受内存大小的限制,可以存放的值的个数是有限的。
缺点
1、除非取尽,否则无法获取迭代器的长度
2、只能取下一个值,不能回到开始,更像是‘一次性的’,迭代器产生后的唯一目标就是重复执行next方法直到值取尽,否则就会停留在某个位置,等待下一次调用next;若是要再次迭代同个对象,你只能重新调用iter方法去创建一个新的迭代器对象,如果有两个或者多个循环使用同一个迭代器,必然只会有一个循环能取到值。
什么是可迭代对象?
在上面简单的说可迭代对象,这里详细的说说python内部的是怎么确认是可迭代对象的,在对象编写了一个叫__ iter __()的魔法方法,这就是一个可迭代对象。 这个方法主要是把这个对象转化成一个迭代器对象
iterator:迭代器
什么是迭代器对象呢?
内置有__iter__()和__next__()方法的对象,就是一个迭代器对象。
打开的文件本身就是一个迭代器对象,执行迭代器对象.iter()方法得到的仍然是迭代器本身,而执行迭代器.next()方法就会计算出迭代器中的下一个值。
迭代器是Python提供的一种统一的、不依赖于索引的迭代取值方式,只要存在多个“值”,无论序列类型还是非序列类型都可以按照迭代器的方式取值。
注意点:上面我们使用iter方法把一个可迭代对象转化成一个迭代器对象,而在迭代器对象中有一个next方法,可以取值,每次调用都可以从可迭代对象取一个值,当我们把可迭代对象中的值去完了在调用next()会发生什么,异常
标签:__,迭代,python,iter,next,对象,理解,循环 From: https://www.cnblogs.com/mozifei/p/17910357.html