学习总结(十四) 1.迭代器 2.可迭代对象 3.for循环迭代器 4.生成器

 迭代器对象: 可以不用依赖索引取值的容器
 可迭代对象:可以通过某种方法得到迭代器对象

迭代器优点:可以不用依赖索引取值
迭代器缺点:只能从前往后依次取值

2.可迭代对象

ls = [4, 1, 5, 2, 3]

iterator=ls.__iter__()# 可迭代对象
res=iterator.__iter__()# 迭代器对象

可迭代对象有哪些:str | list | tuple |set | dict | range() | enumerate()

3.for循环迭代器

#for v in obj : pass
1.获取obj.__iter__()的结果,就是得到操作的迭代器对象
2.迭代器对象通过__next__()方法进行取值,依次将当前循环的取值结果辅助给v
3.当取值抛出异常,自动处理StopIteration异常结束循环
enumerate():给可迭代器对象及迭代器对象添加索引

4.生成器

生成器(range()):自定义的迭代器对象就是用函数语法来声明生成器,用yield关键字取代return关键字来返回值,参数没有多少变化
总结:有yield关键字的函数,函数名() 不是调用函数,而是生成得到,生成器对象,生成器对象就是迭代器对象,可以通过
__next__()进行取值