一、什么是迭代器 1、迭代器指的是迭代取值的工具
2、迭代是一个重复的过程,每一次重复都是基于上一次的结果而来
单纯的重复不是迭代
迭代:重复+每次重复都是基于上一次的结果而进行的
二、为何要用迭代器
迭代器提供了一种通用的且不依赖于索引的迭代取值方式
三、可迭代的对象iterable;但凡内置有——iter——方法的对象都称之为可迭代的对象
可迭代的对象:str,list,tuple,dict,set,文件对象
执行可迭代对象下的——iter——方法,返回的值就是一个迭代器对象iterator
三、迭代器对象
1、既内置有——next——方法的对象,执行迭代器——next——方法可以不依赖索引取值
2、又内置有——iter——方法的对象,执行迭代器——iter——方法得到的仍然是迭代器本身
ps:1、迭代器对象一定是可迭代的对象,而可迭代的对象却不一定是迭代器对象
2、文件对象本身就是一个迭代器对象
四、同一个迭代器只能完整地取完一次值
for本质应该称之为迭代器循环
工作原理1、先调用in后面那个对象的——iter——方法,将其变成一个迭代器对象
2、调用next(迭代器),将得到的返回值赋值给变量名k 3、循环往复直到next(迭代器)抛出异常,for会自动捕捉异常然后结束循环
ps:从for角度,可以分辨出但凡可以被for循环循环取值的对象都是可迭代的对象
三、迭代器总结
优点:1、提供一种通用的且不依赖于索引的迭代取值方式
2、同一时刻在内存中只存在一个值,更节省内存
缺点: 1.取值不如按照索引的方式灵活,(不能取指定的某一个值,而且只能往后取)
2、无法预测迭代器的长度