Python迭代,……在遍历,迭代原理与应用示例

  

本文实例讲述了Python迭代,…的遍历,迭代原理与应用。分享给大家供大家参考,具体如下:

  

迭代是访问集合元素的一种方式。什么时候访问元素,什么时候再迭代,比一次性取出集合中的所有元素要节约内存。特别是访问大的集合时,用迭代的方式访问,比一次性把集合都读到内存要节省资源。

  

<强> demo.py(迭代,遍历):

        导入的时间   从进口Iterable集合   从集合输入迭代器   #有__iter__方法的类是Iterable(可迭代的)。   #既有__iter__方法又有__next__方法是迭代器(迭代器)。   班同学(对象):   def __init__(自我):   self.names=列表()   自我。current_num=0   def添加(自我、名称):   self.names.append(名字)   def __iter__(自我):   ”““Iterable对象必须实现__iter__方法”“   返回自我# __iter__方法必须返回一个迭代器(既有__iter__方法,又有__next__方法)   # __next__的返回值就的是循环遍历出的变量的值   def __next__(自我):   如果自我。current_num & lt;len (self.names):   ret=self.names [self.current_num]   自我。current_num +=1   返回受潮湿腐烂   其他:   提高抛出StopIteration #抛出抛出StopIteration异常时,为遍历会停止迭代   同学=同学()   classmate.add(“老王”)   classmate.add(“王二”)   classmate.add(“张三”)   #打印(“判断同学是否是可以迭代的对象:“,isinstance(同学,Iterable))   # classmate_iterator=iter(同学)# iter()会调用对象的__iter__方法   #打印(“判断classmate_iterator是否是迭代器:“,isinstance (classmate_iterator,迭代器))   #打印下(classmate_iterator)) (# next()会调用对象的__next__方法   同学的名字:#遍历时会先调用同学的__iter__方法(必须返回迭代器对象)。   打印(名字)#遍历出的名字就是返回的迭代器对象的__next__方法的返回值   time . sleep(1) #当__next__抛出抛出StopIteration异常时,用于遍历会停止迭代      之前      

运行结果:

  
  

老王
  王二
  张三

     

<强> demo.py(迭代的应用):

  
  

李=列表(可迭代对象),,,#将可迭代对象转换成列表类型。底层就是通过迭代实现的。
  打印(李)
  tp=元组(可迭代对象),,,#将可迭代对象转换成tuple类型。
  打印(tp)
  #……在可迭代对象,,,,#为遍历也是通过迭代实现的

     

如上例改写如下:

  

<强>示例1:

        班同学(对象):   def __init__(自我):   self.names=列表()   自我。current_num=0   def添加(自我、名称):   self.names.append(名字)   def __iter__(自我):   ”““Iterable对象必须实现__iter__方法”“   返回自我# __iter__方法必须返回一个迭代器(既有__iter__方法,又有__next__方法)   # __next__的返回值就的是循环遍历出的变量的值   def __next__(自我):   如果自我。current_num & lt;len (self.names):   ret=self.names [self.current_num]   自我。current_num +=1   返回受潮湿腐烂   其他:   提高抛出StopIteration #抛出抛出StopIteration异常时,为遍历会停止迭代   同学=同学()   classmate.add(“老王”)   classmate.add(“王二”)   classmate.add(“张三”)   李=列表(同学)#将可迭代对象转换成列表类型。底层就是通过迭代实现的。   打印(李)      之前      

输出:   

  

['老王”、“王二”,“张”三)

     

<强>示例2:

        班同学(对象):   def __init__(自我):   self.names=列表()   自我。current_num=0   def添加(自我、名称):   self.names.append(名字)   def __iter__(自我):   ”““Iterable对象必须实现__iter__方法”“   返回自我# __iter__方法必须返回一个迭代器(既有__iter__方法,又有__next__方法)   # __next__的返回值就的是循环遍历出的变量的值   def __next__(自我):   如果自我。current_num & lt;len (self.names):   ret=self.names [self.current_num]   自我。current_num +=1   返回受潮湿腐烂   其他:   提高抛出StopIteration #抛出抛出StopIteration异常时,为遍历会停止迭代   同学=同学()   classmate.add(“老王”)   classmate.add(“王二”)   classmate.add(“张三”)   tp=元组(同学)#将可迭代对象转换成tuple类型。   打印(tp)      

Python迭代,……在遍历,迭代原理与应用示例