迭代器
迭代:更新换代(重复)的过程,每次的迭代都必须基于上一次的结果
迭代器:迭代取值的工具
迭代器给你提供了一种不依赖于索引取值的方式
需要迭代取值的数据类型有:字符串 列表 元祖 字典 集合
可迭代对象 :只有内置有__iter__方法的都叫做可迭代对象
基本数据类型中 是可迭代对象的有:str list tuple dict set 文件对象(执行内置的__iter__之后还是本身 没有变化):文件对象本身就是迭代器对象
迭代器对象
1.内置有__iter__方法
2.内置有__next__方法
ps:迭代器一定是可迭代对象 二可迭代对象不一定是迭代器对象
迭代器对象无论执行多少次__iter__方法的到的还是迭代器对象本身
迭代器取值的特点 只能往后依次取,不能后退
for循环的本质
for循环内部的本质
1 讲in后面的对象调用__iter__转换成迭代器对象
2 调用__iter__迭代取值
3 内部有异常捕获StopIteration,当__next__报错 自动结束循环
可迭代对象:内置有__iter__方法的
迭代器对象:既内置有__iter__也内置有__next__方法
迭代取值:
优点:1不依赖于索引取值
2 内存中永远只占一份空间,不会导致内存溢出
缺点:1 不能够获取指定的元素
2取玩之后会报StopIteration错