循环设计
range()
在Python中,for循环后的in跟随一个序列的话,循环每次使用的序列元素,而不是序列的下标。
我们也可以使用len()函数和range()函数结合使用,以达到通过下表访问序列的效果:
enumerate()
利用enumerate函数,可以每次循环中同时得到下表和元素(即每次循环返回的是一个二元组(index,element)):
zip()
如果有多个等长的序列,然后每次循环时从各个序列分别取出一个元素,可以利用zip()实现:
zip()函数的功能,就是从多个列表中,依次各取出一个元素。每次取出的(来自不同列表的)元素合成一个元组,合并成的元组放入zip()返回的列表中。zip()函数起到了聚合列表的功能。
循环对象
什么是循环对象
循环对象是这样一个对象,它包含有一个next()方法 ( next() 方法,在python 3x中 ), 这个方法的目的是进行到下一个结果,而在结束一系列结果之后,举出StopIteration错误。当一个循环结构(比如for)调用循环对象时,它就会每次循环的时候调用next()方法,直到StopIteration出现,for循环接收到,就知道循环已经结束,停止调用next()。这里我们创建一个文本文件:
然后我们手动的在python命令行中一次一次的循环,人工查看StopIteration错误:
注意:open()返回的实际上是一个循环对象,包含有next()方法。而该next()方法每次返回的就是新的一行的内容,到达文件结尾时举出StopIteration。这样,我们相当于手工进行了循环。其实在使用for循环时,在循环结束时,也会触发StopIteration错误,不过它自动判断然后结束循环: