本文实例讲述了Python通过对循环理解迭代器和生成器。分享给大家供大家参考,具体如下:
可迭代对象
通过循环依次拿到数据进行使用的过程称为遍历,也叫迭代。我们把可以通过语句迭代读取数据的对象称之为可迭代对象。
——通过<代码> isinstance() 代码>可以判断一个对象是否可以迭代
引用>#判断列表 print (isinstance ([], Iterable) >之前打印结果为真正的即为可迭代对象。
——自定义一个能容纳数据的类,测试该类的可迭代性
进口集合 类MyClassmate(对象): def __init__(自我): self.names=[] def添加(自我、名称): self.names.append(名字) #创建MyClassmate对象 my_classmate=MyClassmate () my_classmate.add(“小王”) my_classmate.add(“小李”) my_classmate.add(“小张”) #判断MyClassmate是否为可迭代对象 打印(“是否为可迭代对象:“,isinstance (my_classmate collections.Iterable)) #迭代数据 临时的my_classmate: 打印(临时) >之前运行结果:
是否为可迭代对象:假
引用>
回溯(最近调用最后):
,,临时的my_classmate:
TypeError:“MyClassmate”对象不是iterable封装一个可以存放多条数据的类型是不可迭代的
<强>何为可迭代对象强>
<李>我们分析对可迭代对象进行迭代使用的过程,发现每迭代一次(即在…在…中每循环一次)都会返回对象中的下一条数据,一直向后读取数据直到迭代了所有数据后结束。那么,在这个过程中就应该有一个“人”去记录每次访问到了第几条数据,以便每次迭代都可以返回下一条数据。我们把这个能帮助我们进行数据迭代的“人”称为迭代器(Iterator)。李> <李>可迭代对象的本质就是提供一个这样的中间“人”即迭代器帮助我们对其进行迭代遍历使用。李> <李>可迭代对象通过<代码> __iter__ 代码>方法向我们提供一个迭代器,在迭代一个可迭代对象的时候,实际上就是先获取该对象提供的一个迭代器,然后通过这个迭代器来依次获取对象中的每一个数据。李>
1。可迭代对象的本质就是提供一个这样的中间“人”即迭代器帮助我们对其进行迭代遍历使用
2。可迭代对象是一个具备了<代码> __iter__ 代码>方法的对象,通过<代码> __iter__ 代码>方法获取可迭代对象的迭代器
引用>从进口Iterable集合 类MyClassmate(对象): def __init__(自我): self.names=[] def添加(自我、名称): self.names.append(项) def __iter__(自我): ”““空实现该方法”“ 回来没有 #创建MyClassmate对象 my_classmate=MyClassmate () my_classmate.add(“小王”) my_classmate.add(“小李”) my_classmate.add(“小张”) #判断MyClassmate是否为可迭代对象 print (isinstance (my_classmate, Iterable)) >之前运行结果:
是否为可迭代对象:真正的
引用>这回测试发现添加了<代码> __iter__ 代码>方法的my_classmate对象已经是一个可迭代对象了。
<强> iter()函数与下一个()函数强>
列表、元组等都是可迭代对象,我们可以通过iter()函数获取这些可迭代对象的迭代器。然后我们可以对获取到的迭代器不断使用<代码> next() 代码>函数来获取下一条数据。
引用>李=[33 11日,22日,44岁,55) #通过iter()取得可迭代对象的迭代器 迭代器=iter(李) #通过next()函数取得迭代器迭代器指向的下一个值 打印(下一个迭代器) 打印(下一个迭代器) 打印(下一个迭代器) 打印(下一个迭代器) 打印(下一个迭代器) 打印(下一个迭代器) >之前1。<代码> iter (iterable) 代码>函数是把可迭代对象的迭代器取出来,内部是调用可迭代对象的<代码> __iter__ 代码>方法,来取得迭代器的
2。<代码> next (iterator) 代码>函数是通过迭代器取得下一个位置的值,内部是调用迭代器对象的
Python通过对循环理解迭代器和生成器实例详解