本文实例讲述了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迭代,……在遍历,迭代原理与应用示例