迭代器
什么是迭代?
1、迭代是重复的过程,重复一次即算迭代一次
2、迭代的结果做为下一次迭代的初始值
迭代器的产生
对于序列类型:字符串、列表、元组我们可以通过索引来进行取值,若是遇到字典、集合、文件等非序列类型
我们要进行取值的时候,则必须要有不需要索引的方式来进行取值,这个方式就是迭代器
什么是可迭代对象?
含有__iter__()方法的对象,即obj.__iter__()
什么是迭代器
可迭代对象执行__iter__(),得到的结果,就是迭代器对象,即具有__next__()方法的迭代器对象
注意:迭代器对象一定是可迭代对象,可迭代对象不一定是迭代器对象
迭代器的优缺点
优点:1、不依赖索引取值 2、惰性计算、节约内存
缺点:无法获取迭代对象的长度;不可回,只能一直next,除非取不到值,跑出异常
#迭代:迭代是一个重复的过程,迭代的结果都是下次迭代的初始值
#迭代对象:只的是内置有__iter__()方法的对象
#迭代器对象:迭代对象执行__iter__()方法得到的结果;别切具备有next()方法的对象
#定义一个列表
# 以下例子中s为可迭代对象(需执行了__inter__()),inter_test为迭代器对象
# s ='hello'
# inter_test=s.__iter__()
# print(inter_test)
# print(inter_test.__next__())
# print(inter_test.__next__())
# print(inter_test.__next__())
#---------------------------------
# l=[1,2,3]
# for i in l.__iter__():#1、将l变成迭代对象l.__iter__() 2.执行.next()函数
# print(i)
#对于列表的取值,通过索引来取值
# l =[1,2,3]
# index=0
# while index<len(l):
# print(l[index])
# index+=1
#迭代器对象的使用
dic={'a':1,'b':2,'c':3}
#得到迭代器对象,迭代器对象即有__iter__又有__next__,但是:迭代器.__iter__()得到的仍然是迭代器本身
inte_dic=dic.__iter__()
# print(inte_dic.__iter__()is inte_dic)
# while True:
# try:
# k=next(inte_dic)
# print(dic[k])
# except StopIteration:
# break
for intm in dic:
print(dic[intm])