Python3基础-迭代器

房东的猫 提交于 2019-12-01 19:12:17

迭代器介绍

迭代器即用例迭代取值的工具,而迭代式重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复成为一次”迭代“;而每一次迭代得到的结果会作为下一个迭代的初始值,单纯的重复并不是迭代 

可迭代对象

1、语法形式上,内置有__iter__方法的对象都是可迭代对象
2、字符串、列表、元祖、字典、集合、打开的文件都是可迭代对象
str='susu'
str_iter=str.__iter__()  #字符串
print(str_iter)
list=[1,2,'a']
list_iter=list.__iter__()  #列表
print(list_iter)
dict={'name':'susu','paaswd':'123456'}
dict_iter=dict.__iter__()  #字典
print(dict_iter)
tup=(1,2,3,4)
tup_iter=tup.__iter__()  #元祖
print(tup_iter)
set={1,2,3,4,'yuyu'}
set_iter=set.__iter__() #集合
print(set_iter)
with  open('aa.txt','rb') as f:
    f_iter=f.__iter__()  #打开的文件
    print(f_iter)
"""
执行结果
<str_iterator object at 0x02BF09F0>
<list_iterator object at 0x02BF0A30>
<dict_keyiterator object at 0x02C1F600>
<tuple_iterator object at 0x02C0EC90>
<set_iterator object at 0x02C1ED78>
<_io.BufferedReader name='aa.txt'>
"""

迭代器对象

1、调用obj.__iter__()方法返回的结果就是一个迭代器的对象
2、迭代器对象是内置有__iter__和__next__方法的对象
3、执行迭代器对象.__iter__()方法得到的仍然是迭代器本身
4、执行迭代器.__next__()就会计算出迭代器中的下一个值
str='susu'
str_iter=str.__iter__()
print(str_iter)
print(str_iter.__next__()) # 输出 s
print(str_iter.__next__()) # 输出 u
print(str_iter.__next__()) # 输出 s
print(str_iter.__next__()) # 输出 u
print(str_iter.__next__()) #异常,报错 StopIteration,代表无值可取,迭代结束

for 循环

#for循环又称为迭代循环,in 或可以跟任意的可迭代对象
str='H i ,My name is susu'
#首先会调用可迭代对象str内置的__iter__()方法拿到一个迭代器对象;
#然后再item = 迭代器对象.__next__(),执行循环体完成一次循环
#循环,直到捕捉StopIteration异常,结束迭代
for item in str:
    print(item,'-',end='')

---不依赖索引迭代取值,用while循环

#字符串
str='H i ,My name is susu' #可迭代对象str
str_iter=iter(str) #相当于在调用str.__iter__(),返回str的迭代器对象
while True:
    try:
        print(next(str_iter),end='')  #相当于在调用str_iter.__next__()
    except StopIteration: #捕获异常   终止循环
        break
#字典
dict={'name':'susu','paaswd':'123456'}
dict_iter=dict.__iter__()  
print(dict_iter)
print(dict_iter.__next__())
print(dict_iter.__next__())
"""
执行结果
name
paaswd
"""
dict={'name':'susu','paaswd':'123456'}
dict_iter=dict.__iter__()  
index=dict_iter.__next__()
print(dict[index])
index1=dict_iter.__next__()
print(dict[index1])
"""
执行结果
susu
123456
"""
#字典
dict={'name':'susu','paaswd':'123456'} #可迭代对象dict
dict_iter=iter(dict) #相当于在调用str.__iter__(),返回str的迭代器对象
while True:
    try:
        print(dict[next(dict_iter)],'',end='')  #相当于在调用str_iter.__next__()
    except StopIteration: #捕获异常   终止循环
        break
"""
执行结果
susu 123456 
"""

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!