day14 Pyhton学习
一.迭代器-概念
可迭代协议:内部含有__iter__方法的值/变量都是可迭代的
如何得到一个迭代器:可迭代变量.__iter__()返回一个迭代器
迭代器协议:内部含有__iter__方法和__next__方法的值/变量都是迭代器
迭代器的特点:节省内存,惰性运算,一次性取值,只能按顺序取
可迭代和迭代器的关系:
所有的迭代器都是可迭代的,反之不成立
迭代器是特殊的存在
for循环和迭代器的关系:
无论是可迭代的还是迭代器都是可以被for循环
如果直接循环迭代器,那么循环一次就没有了
如果循环的非迭代器,那么每一次循环都相当于从头到尾的循环
因为在for循环中的所有非迭代器都会通过iter生成一个新的迭代器
l = [1,2,3,4] res1 = l.__iter__() res2 = l.__iter__() # res1和res2都是迭代器 # 是两个完全不同的迭代器
用while循环实现一个for循环的功能(循环list/dict) # l = [1,2,3,5,6,7,12,23,412] # l_iter = l.__iter__() # while True: # try: # 要保护的代码 # print(l_iter.__next__()) # except StopIteration: # 要保护的代码中一旦出现了StopIteration错误,程序不报错,直接执行break # print('报错啦')
# break