请问这个 Python 迭代器里 next () 定义咋理解( 二 )

在这个手动模拟迭代的过程中,先把可迭代对象转换成迭代器,然后用next方法进行手动迭代,迭代到最后出现StopIteration异常退出。真实迭代的过程就是这样。
关于数据科学更系统、更深入的探讨可进入我们的专栏《Python数据科学之路》:
酱油哥:来吧,一起踏上Python数据科学之路本专栏模仿美剧剧集编排分为五季,第一季:Python编程语言核心基础、第二季:Python数据分析基本工具、第三季:Python语言描述的数学基础、第四季:机器学习典型算法专题、第五季:实战热点深度应用。

■网友
不知道你在说啥.元组的赋值是python的一个"赋值魔法",BEGINNING PYTHON提过如果你是在纠结next()的作用,我也刚刚做了一下实验:class Foo: def __init__(self): print "\initializing.................\" self.a=0 def next(self): self.a+=2 return \u0026#39;*\u0026#39;*self.a def __iter__(self): print "when self.a=%d,__iter__ is called\ "%self.a return selff=Foo()#创建一个迭代器for i in f: if len(i)\u0026lt;12: print i+\u0026#39;\\u0026#39; else: break结果:C:\\Python27\u0026gt;python iter_stuff.pyinitializing.................when self.a=0,__iter__ is called******************************\u0026#39;\u0026#39;\u0026#39;你可以看到:1,f是一个"未来的"字符串的序列,内容是next()返回的东西2,iterator只被创造一次,终身调用ps:__iter__返回的东西必须是self,实例化后,就是f,(f=Foo())一开始,f只是一个,当for,while这些机制触发了next()的时候,next()开始往f=填充数据step 1:step 2:................................\u0026gt;这个掉渣天的序列不如说是一个一次性的log,阅过即焚,除非你找一个东西来记下,不然等迭代器跑到最后,以前的数据你都找不到了\u0026#39;\u0026#39;\u0026#39;
■网友
self.a, self.b = self.b, self.a + self.b即python中的元组赋值,Python会按照位置把右边的对象和左边的目标从左至右相配对。
■网友
self.a, self.b = self.b, self.a + self.b在赋值的时候,是同时赋值的例如 一开始的时候 self.a=0,self.b=1那么在赋值的时候 self.a已经变成1,但是在 self.b=self.a+self.b中的self.a还是0这样就能说清楚了
■网友
抛开类会更清楚:a=0b=1l=def next(L):\tL,L=L,L+L\treturn Lnext(l)


推荐阅读