15.python的for循环与迭代器、生成器

时间:2023-03-08 16:13:18

  在前面学习讲完while循环之后,现在终于要将for循环这个坑填上了。之所以拖到现在是因为for循环对前面讲过的序列、字典、集合都是有效的,讲完前面的内容再来讲for循环会更加容易上手。

  首先,for循环和while循环一样,都是在满足一定条件的时候对其内层的代码进行循环执行。不同的是,while循环判断的是条件,而for判断的是迭代对象。

    Python 中的 for 接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素。

  我们先来看for循环的代码:

a = (1, 2, 3, 4, 5)
for x in a:
print x

aaarticlea/png;base64,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" alt="" />

  我们以序列中的元祖为例,发现其输出了这些,那么这段代码的逻辑是怎么样的?为了方便大家理解,我画了这样一个图:

aaarticlea/png;base64,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" alt="" />

  我写了一个收租的小故事,方便大家理解。不知道为什么写的时候感觉眼角有点湿润。

  for循环其实就是不断的去可迭代对象中拿去元素,而可迭代对象在每次迭代的时候都会把指针下移一格,也就是下次再来拿的时候,拿的是下一个。而这是因为可迭代对象有这样行为,才称其为可迭代。

  这个时候我又要问一个问题,在迭代循环结束以后,x的值是否还存在?

  当然还在,都说了作用域是函数的东西,迭代循环并不是函数。按照for循环的思路,x的值是不断更新的,所以在循环结束的时候,x应该等于最后一次迭代的值。以这里为例,x在循环结束的时候,其值应该为5。即x=5。

a = (1, 2, 3, 4, 5)
for x in a:
print x
print '----',x
print a

  aaarticlea/png;base64,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" alt="" />

  另外,虽说交租是交了出去自己没有了,但是迭代循环并不会改变a本身,也就是相当于借给别人看一眼,东西还是自己的。

  当然现实中没有这样的福利就是了。

  序列的迭代都和上面的一样,其都是按照索引的顺序依次给出。而字典和集合都是无序的,所以循环得到的顺序和我们代码写的顺序是不同的。但是我在字典篇中说过,字典的无序体现在其保存上,也就是一旦保存以后,其顺序虽然和我们代码写的顺序不同,但也不会每次循环得到的顺序都不同。如果每次循环得到的顺序都不同那要多大工程,浪费多少计算资源,这显然不符合python化繁为简的哲学。

  另外,这里提醒一句,字典循环得到的键,而集合没有键的概念,所以得到的元素。


 1.迭代器和生成器

  你可能会看到这样的写法:

for x in range(1,5):
print x

aaarticlea/png;base64,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" alt="" />

  range()是什么鬼,我们先进交换模式看一下先:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIsAAAAhCAIAAABm/M8gAAABwklEQVRoge1aQZbDIAj11nON3JhZTCchCkiCRGL5rwvLA0G+KE1TAKH8A86oJAVBY66Eck7OuzLOcgbnCH/llDUr6urI5tpstiu3ODZC8G7ZHPZJRgVTzyP7GF4oRviFNHddAsIFlKiwIEPRjikjjiB+qID0wiDotg+cFdc+DI7vOk4RLEASeUVdterKn0QdwatJIhNqbIunk2Tio0vSVratbHiA5buEU8OagvmxGANDXC8XkSHwIQlL2nFFGDcQxjCohkL9+APvGoImiVhOsgIKhsjCAgNDgn44hobfQyRDl6pEKMEK69eQR5vQJlQuF04om+/oXiTdyyZut+1ED3kcVScV1iGbCM6cWI/igRBXakrNhzE/AgFyuXCQ06pPegR6IDhDIJbLlyA6Q4n2zvx8VsXrFkgwRCgZ1mPMyJCEtuZLMWTMrzCzt7lguxRDnFA1+6AUG2NIhnSeZjD0Z5UMKdyYbzKL32So52NSCe4myZDoYFAu7jGEPx5RPYA7DOmPHbJTeMycnIeThIW22763B7ldrE+QvQIWrKHuJp17LdnN3/1MIRENXgzFfMP2jUiGosPrP9ZkaBS83lNIhkbhFyBkOMyQOmneAAAAAElFTkSuQmCC" alt="" />

  直接返回了一个列表,也就是这个函数是快速生产列表的咯,for循环就相当于迭代了列表了咯,这就好理解了。

  还可能会有这个写法:

for x in xrange(1,5):
print x

aaarticlea/png;base64,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" alt="" />  

  xrange()又是什么鬼?

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHwAAAAbCAIAAAAxjXwLAAABrElEQVRoge1XQQ7DIAzj1/vGfswOkxgkxoQRKKyzeoA0Ma3lhhLiPRBC2IfnQ/FAdPbgztBKWbQLJbpqG8z55Fd1FzIJEY1VzXjH84j57+kONRoR3VjOmHXIS/dneL6vNM7jIijySVqeSco/bzgguu4t9nLGDKOOuotBmuoIrNIMkLM2jk5O1w2qWc6Ydci3w0D36UiezGWt3YX2jwOik3xn0d17ul30Li+TD0Vgd6fPUFwM4DS2TE2oSGZCsyk3G/esX8Z5Hoc7JN8eRU6NAZaDl0QSW8xrz+zCGb99Obipa+BK2XV0PpEeBGLqI3Ck6KdjR9GnHnV3OEdv8AgltChfyxRCcY0TeuHq9RWEIkKvEapmfBmuXr8ElMNd9BFOF4T0EMlTublgUOSTtBirHzi0sLvoXQstQ37QkoM01RFYpRkgJ2mv85xuWWgZxFmrwxTa7LqkdrfmQV/RCcmRond52f7Ct3M6aS+yhpqaUJFMe8T+P2PsaetRbKRpIDo13x5FTo0BloMHMmTaVRssn4S563/nL545KNnliscF/+nE1LfFX4wL8Bf9ArwAmZkjpFW3vyYAAAAASUVORK5CYII=" alt="" />

  返回了自己。

  好吧,这里解释一下,什么是迭代器和生成器了。


1.迭代器

  迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。

aaarticlea/png;base64,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" alt="" />

  而在for循环中,会自动调用 iter()将我们要迭代的对象转化为可迭代对象,每次循环都会调用 .next() 方法获取新元素,当引发StopIteration错误的时候自动退出循环,这就for循环的内部操作。

  常用的数据类型,如:str、tuple、list、dict、set,都能进行迭代循环,因为其内部都有相应的方法,如list中的:

aaarticlea/png;base64,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" alt="" />

  所以我们自己也可以创建一个可迭代的类:

class Text():
def __init__(self,list_input): #初始化函数
self.list = list_input
self.i = 0 def __iter__(self):
return self def next(self):
if self.i == len(self.list): #如果索引到了最后,说明迭代完毕
self.i = 0 #将索引归0
raise StopIteration #触发错误
#如果索引没到最后
self.i += 1 #索引先后移一位
return self.list[self.i - 1] #取出前一位的值
a = Text([1,2,3])
for x in a:
print x

aaarticlea/png;base64,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" alt="" />

  这就是迭代器了。


2.生成器

  xrange()就是生成器。

  所谓的生成器就是每次调用的时候返回一个对象,而不是一次性在内存中创建,从而达到节约内存的作用。

  而生成器靠yield关键字实现,生成器的编写类似于函数,只不过将函数的return改成了yield:

def scq():
yield 1
yield 2
yield 3
a = scq()
print a.next()
print a.next()
print a.next()

aaarticlea/png;base64,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" alt="" />

  每次调用a.next()的时候得到的都是不同的值。

  当然我们也可以像函数一样处理它:

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

  总之,yield的核心在于冻结函数,一旦遇到,冻结这个函数;而return在于结束函数,一旦遇到,返回结果,函数整个退出,下次调用时重新开始执行。

  当然,到了最后一个的时候也会触发错误:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAA8CAIAAADnvXNuAAACeElEQVR4nO2ZMY6jMBSG37F8ofga2RO4nFOkIZJbpKlpUIrIGZcrmpTu2OZtYQLYhGhgXxJ29/9kjYhjg/zNiwH9VNc1A/ZmZ3xysAaSsHnWtCc62D8+0buwWg0KvVF65VJEbF6N2pP6XP0vfTMTfYncJYjYXIA3H++t4mBck/ZYTXkt3un6Fi+2+fY9oamoSm3eNbdS532bVu+JfvRNmSvbQ/dRHzTFbw+WeegfHJ1vA0bTk5HZ+BxvFBERzS2oqagoqHKmPNKxNOE2zZVUFFQ6348pne8GN8xsqyMdYysGp8+3ORSR/1TU74mdps7OdHDe82F89tV3arNfyYMlNRUVpQmjWgtO3TwqF7qequHgdi4kE19em6Nlj9c/52LOZjb9wRkma6GH1TlIGR8Uk7prqq5UpxPHV5vcc9be1lfUpoRNe5h3eqsLb9QCm31tMvuQ1KYa67uNt83QOdG5+hnpsc1uj9M23/WGH3var20+N90lr0bt8zNMibWpdjtFpMxX/rvryrDQTdwKu2L0ruz7476pXODRvsnMHJzqx4wv+NznzbOmv/kRcjHPfBca7un/kVABXv30/m8Dm5LApiSwKQlsSgKbksCmJLAZQZIhB5IMOZBkrAZJhiBIMnKQZMyOnIIkA0kGMyPJiBdEkoEkY7sgydgeeE+XBDYlgU1JYFMS2JQENiWBTUlgM4IkQw4kGXIgyVgNkgxBkGTkIMmYHTkFSQaSDGZGkhEviCQDScZ2QZKxPfCeLglsJrRtezqd2rbtjxdNh82Ey+USQhj/XTQdNhPGVRmPF0F1XfOvn1mLj87TfrTHDTZhc6sNNmFzqw02JdtvGUsM2RJK8fgAAAAASUVORK5CYII=" alt="" />

aaarticlea/png;base64,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" alt="" />

  可以看出,生成器是每次调用的时候生成一个对象,所以生成器比迭代器更节约内存,但也更耗费cpu,因为代码需要运算。不过一般情况下,使用生成器会有更高的效率。


  最后补充range和xrange两个函数的用法:

  range和xrange都接受三个参数:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAVCAIAAAAIOYY/AAADDElEQVR4nO1ay5XbMAxENykh7CQVGG1YFeCoKnwMC1AHOekQduAmmAP/X9HMxrLyMCdZC1IYUAMQXIFmMBhTgLMdYDCuChYPgzEJFg+DMQn4leJsf6ah6EbqbCcY18cLL1JSeVLxPEncARaAhzx43CbAWC54YPqvIFGwdBhfA0Vi7D3uiEc7/fTFY2xWUjvCofG/wTDbr4VEw9dlGbFdUb/MojbbUC7ui8f71MF5mnGQCIfaUUQTHh6N2hHuKM3FORGY45WCWRQYeaXinkdfVTwjRMeC0RslETLgT70jPFDu5712r/JiFnMu1T1sVB75MD1M0vOE3mY1RU3RGpk1uiPLFKUiYS7MZOaX/W2MkEgAQCiZSZRQhmFxVc2JhUHGqpwke3rVw9qoAjvCQ8qNVLRgNkomRDazEK0Ai6CnrtiMYoRXFh+JAICIeciYxRGLIT1XxeNaHTuvccX3PzvCPdpTjlQeiTlv71x8YUyqfzIXioQLeaKwwyTRskmeXqzMUOWReifaMERpJaW12oQN0Y5wF/SMMqKz0Tu+sDUf4eXi4+OkJZpXUpEQ9PtaLMIqv5/FvHi8HmJhmOulKDKD4ilcCRFoSSXUB/dWx1ELExbtnSySVOFA8+lHbicwa/Ck2ypClEYu7r1a3cQhr07e6XD5QBbQWJ13sRg7ggriiRoed4Amy8qTSVnPisfdUSReWO+QUbVScfCjpZAUlBbXDbMZk8nMlafXnLSjStg1ULRCL9tlC+azndbq6TLrcds2wKtaebI712Gh/Sq/k4X1YKQJs+LJjwqSnmcB3LVO/p9jt4zRnWQfmUwV8ki+cQMAcbsJgO+3Hz7R+A4kHVttlaLJ/NzeIrZxN7NdmHn6Nz8g27gVoxJEp6JqEz59VPbZC+DuQvqQcdxMYIeORsd45T2hRBBCtEl8NAt/550sqtJpHxh86ocFteTUxHW/MOil07/G3DHjBP4PFvq1Lww+VTlaJ2mqc8zCaMJW7ovH7mNZ8IehDMYkWDwMxiRYPAzGJFg8DMYkWDwMxiT+AE/s1fGXrs/FAAAAAElFTkSuQmCC" alt="" />

  其中start和stop表示开始和结束,同样不包括结束的那个值,后面的只是个分界线而已。当只给一个参数的时候,默认从0开始,即start=0。

  而step表示步长,和序列中的一样,表示走几步执行生成一次。


  暂时先写这么多,后面有什么错误和补充的会继续完善。

  参考和转载的文献:戳这里

相关文章