迭代器
1、先明白迭代器是什么意思
迭代:不断的取值的(器)工具
迭代器:就是一个重复的过程,每一次重复都是基于上一次的结果而来的。
(单纯的重复不是迭代)
2、为什么要有迭代器
不依赖索引取值的方法,通用
3、迭代器有两个对象
(1)、一个是可迭代对象,(在python内置有__iter__方法的对象都是可迭代的对象)
(2)、一个是可迭代对象,(在python内置同时有__iter__方法和__next__方法的对象就是迭代器对象),或
同iter()方法转变成迭代器对象
案例:
info = {'name': 'egon', 'age': 18, 'is_beautiful': True, 'sex': "male" } #把可迭代的对象,转成迭代器对象 info_iter = info.__iter__() res1 = info_iter.__next__() res2 = info_iter.__next__() res3 = info_iter.__next__() res4 = info_iter.__next__() res5 = info_iter.__next__() print(res1) print(res2) print(res3) print(res4) #这里已经取不到值,会报错 print(res5)
结果:
C:pythonPython35python.exe D:/hanshu/迭代器/d1.py Traceback (most recent call last): File "D:/hanshu/迭代器/d1.py", line 14, in <module> res5 = info_iter.__next__() StopIteration
得出结论:
一旦迭代器取值干净,再继续取就会抛出stopIteration (简单通俗的说:迭代器循环取完值,在取,就没有值了)
4、for循环(即 迭代器循环)
#for循环即迭代器循环 #l是可迭代对象 l = [1,2,3,4,5,6,7] l.__iter__() ''' for 循环的底层运行过程,调用iter()方法把l(可迭代对象)转变成(迭代器对象) 然后生成的迭代器对象调用next()方法取值,把值赋值给i,一次循环,基于上次的结果,重复循环 ,直到值全部取完,遇到StopIteration退出,结束循环。 ''' for i in l: pass