迭代器

迭代器

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循环提供依据


原文地址:https://www.cnblogs.com/nodchen/p/8746689.html