迭代器对象: 可以不用依赖索引取值的容器
可迭代对象:可以通过某种方法得到迭代器对象
迭代器优点:可以不用依赖索引取值
迭代器缺点:只能从前往后依次取值
iterator=ls.__iter__()# 可迭代对象
res=iterator.__iter__()# 迭代器对象
str | list | tuple |set | dict | range() | enumerate()
#for v in obj : pass
1.获取obj.__iter__()的结果,就是得到操作的迭代器对象
2.迭代器对象通过__next__()方法进行取值,依次将当前循环的取值结果辅助给v
3.当取值抛出异常,自动处理StopIteration异常结束循环
enumerate():给可迭代器对象及迭代器对象添加索引
生成器(range()):自定义的迭代器对象就是用函数语法来声明生成器,用yield关键字取代return关键字来返回值,参数没有多少变化
总结:有yield关键字的函数,函数名() 不是调用函数,而是生成得到,生成器对象,生成器对象就是迭代器对象,可以通过
__next__()进行取值
原文:https://www.cnblogs.com/xzcvblogs/p/10793337.html