迭代器
1 什么是迭代:指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果是下一次重复的初始值
2 为什么要有迭代器:
对于序列类型:str list tuple可以依赖索引 进行迭代取值 但是对于dict和set,文件 Python必须提供不依赖于索引的迭代
取值方式;因而被称之为迭代器
3 可迭代的对象
obje.__iter__
针对只要含有内置方法__iter__ 就是可迭代的对象
name='cisco' name.__iter__() <str_iterator object at 0x02F56030>
4迭代器对象 同时有以下2种方法
obj.__iter__
obj.__next__
f=open('a.txt','r',encoding='utf-8')
f.__next__
f.__iter__
总结:
1 可迭代对象不一定是迭代器对象
2 迭代器对象一定是可迭代对象
调用__iter__() 方法 得到的是迭代器对象 将原先可迭代对象变成迭代器对象
其实此处严格意义上说,只要可以有__iter__方法就可以变成迭代器对象
d={'key1':'value1','key2':'value2'}
d_iter=d.__iter__()
d_iter2=d_iter.__iter__()
d_iter3=d_iter.__next__
针对字典取key
d={'key1':'value1','key2':'value2'}
d_iter=d.__iter__()
print(d_iter.__next__())
print(d_iter.__next__())
d.__iter()=iter(d)
调用__next__() 方法 等价于d.__next__()=next(d)
迭代器举例代码
d={'key1':'value1','key2':'value2','key3':'value3'} d_iter=iter(d) while True: try: print(next(d_iter)) except StopIteration: break print('===========>') print('===========>') print('===========>')
for循环详解
d={'key1':'value1','key2':'value2','key3':'value3'}
迭代器的优缺点:
提供一种统一的,不依赖索引的取值方式,为for循环提供依据