python7-迭代器与生成器
1、迭代器协议:对象必须提供一个next方法,执行该方法迭代中的下一项,如果没有了返回stopiteration异常(只能往后走,不能往前走)
2、可迭代对象:实现可迭代协议的对象(实现方法:对象内定义一个__iter__()方法)
3、协议是一种约束,可迭代对象实现了迭代器协议,(如for循环,sum,max,min;这些函数用iter方法先把数据类型(列表,元组,字符串等)转成可迭代对象)
for 循环基于迭代器协议工作,与索引无关,提供了统一的遍历方法使适合于序列和非序列数据类型;while循环可以用索引进行遍历。例如:l=[1,2,3] while index<len(l): print( l [index ] ) #适合序列(字符串,列表,元组)类型,不适合非序列类型(字典,集合,文件)
用while模拟for循环(用异常处理):
diedai_l=l.__iter__()
while True:
try:
print(diedai_l.__next__())
except stopiteration:
print("完了")
break
浙公网安备 33010602011771号