什么是迭代器?
答:重复,下一次的输出是基于上一次的结果
列子:
i=[1,2,3,4] count=0 while count<len(i): print(i[count]) count+=1
索引
i={'a':1,'b':2,'c':3} for k in i: print(k)
通常以前都会去用索引取值,现在有了一个可以不依赖索引取值的方法, python里有内置的迭代方法: X.__iter__ 这个X是什么? X可以是 字典、列表、字符串、集合、元组、文件。
这个X.__iter__就称为迭代的对象(也就是说当可以用迭代的方法时就称为可迭代对象 ), 输出的结果就称为迭代器
当你已经成功的写出一个迭代器 那么就一定会再有一个__next__的这个方法,请看下面的代码:
i={'a':1,'b':2,'c':3} a=i.__iter__() b=a.__next__()
很显然 这个a就是一个迭代器 那么就可以接着写b 但是不可以直接a=i.__next__()这是错误的 next(然后)的意思 你都没有第一次 那么就不会有然后
i={'a':1,'b':2,'c':3} a=i.__next__() #######错的 错的 错的 #####
完整的迭代器:
i={'a':1,'b':2,'c':3} a=i.__iter__() print(a.__next__()) print(a.__next__()) print(a.__next__())
如果你的print多于变量的数量 那么就会StopIteration报错
总结:
迭代器的优点:
1、不依赖于索引取值
2、节省内存 (迭代器本身就是一个内存地址,管你有几十万,几百万的值,你写几个next就取出几个值)
迭代器的缺点:
1、取值麻烦
2、不可逆,也就是只能一直next往后取值 不可以往回取值