一. 迭代器
1.什么是可迭代器?
除了数字和布尔值之外,其他数据类型都是可迭代对象。(字符串,列表,元组,字典,集合)
2.可迭代协议
2.1 可以被迭代要满足的要求就叫可迭代协议,可迭代的定义非常简单,就是内部实现__iter__.
2.2 迭代器遵循迭代器协议:必须要有__iter__方法和__next__.
2.3 for 循环,能循环一个可迭代对象步骤:将可迭代对象转化成迭代器。内部使用__next__方法,一个一个取值,加了异常处理功能,能取值到底后自动停止。
2.4 a=对象.__iter__(创建一个迭代器)
l={'k1':1,'k2':[11,33,'Ada'],'k3':'Tro','k4':('k1','k2')} a=l.__iter__() #创建一个迭代器。 print(a.__next__()) #一行一行的取值。 print(a.__next__()) print(a.__next__()) print(a.__next__()) 结果: k1 k2 k3 k4 #字典的迭代器生成的是键。
注意:迭代器的特性:1.惰性机制。2.不能从下往上走。3.一次性的,用完就没了。
l=[1,2,3,4,'try',6,['kiss','you','godbye'],9,8] a=l.__iter__() while True: try: print(a.__next__()) except StopIteration: break
结果:
1
2
3
4
try
6
['kiss', 'you', 'godbye']
9
8