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

 

posted @ 2019-01-07 15:11  candh  阅读(127)  评论(0)    收藏  举报