首页 理论教育 for语句的应用Python即学即用

for语句的应用Python即学即用

时间:2026-01-26 理论教育 对我是小斗 版权反馈
【摘要】:for语句能够在后台自动调用迭代器的next方法,捕获StopIteration异常并结束循环。歌手姓名按照出场次序保存在元组中,利用for循环依次输出。运行程序,运行结果如下:2.range函数在Python中for语句与range函数搭配可以实现其他语言中for循环的功能。文件ch3_13.txt中的内容如图3-2所示:图3-2 文本文件中的内容运行程序,输出结果如下5.列表解析for语句也可以用于列表解析中。

Python中的for语句与其他语言区别较大,更像其他语言的foreach循环,为Python提供了强大的循环结构,可以遍历序列成员,可以用在列表解析和生成器表达式中。for语句能够在后台自动调用迭代器的next方法,捕获StopIteration异常并结束循环。 

for语句的使用格式: 

图示

迭代对象可以是序列、迭代器或其他支持迭代的对象。每次循环时,迭代变量表示可迭代对象的当前元素,一次循环结束,再表示迭代对象的下一个元素,直至所有元素迭代完毕。 

下面编程输出“我是歌手”节目第三季第一场中出场歌手的次序和姓名(ch3-9.py)。歌手姓名按照出场次序保存在元组中,利用for循环依次输出。 

图示

运行程序,运行结果如下:

图示

图示

1.enumerate函数 

在ch3-9.py中,借助了变量n来显示歌手的出场次序,其实自Python 2.3后,Python就新增加了enumerate 函数,不仅可以访问可迭代对象的元素,还可以访问其索引(从零开始)。 

下面用enumerate 函数改写ch3-9.py代码(ch3-10.py)。程序直接利用enumerate 函数的返回值获得歌手出场次序及姓名。 

图示

运行程序,运行结果如下:

图示

2.range函数 

在Python中for语句与range函数搭配可以实现其他语言中for循环的功能。在本书前面章节中也用到过range函数,本小节将对range函数做详细介绍。 

range函数的使用格式: 

图示

range函数会返回一个包含“(终值-初值)/步长”个元素的有序列表,各元素的值大于或等于初值且小于终值,range函数的三个参数(初值,终值,步长)都要求是整型数字,步长省略则默认为1,初值省略则默认为0,如: 

图示

注意:元素值必须小于终值。步长不可以为0,否则会引发错误,如:

图示

图示

例如,下面的程序利用for语句和range函数 计算1+2+3+…+100(ch3-11.py)。为了range中的元素能取到100,range的终值参数应该设为101。 

图示

运行程序,运行结果为:

图示

本例中虽然代码很简洁,但是range(1,101)要产生100个元素的列表,占有较多的内存,如果需要处理更大范围列表时,range函数的缺点显而易见。为此Python提供了xrange函数。 

3.xrange函数 

xrange函数与range函数类似,但不会在内存中创建列表的完整副本。它只能用于for循环中,在for循环外,xrange函数毫无意义。 

xrange函数的调用格式与range函数相同。 

图示

如:

图示

4.迭代器 

for循环不仅可以遍历序列,也可以访问迭代器。用for循环访问迭代器与访问序列的方法差不多。迭代器对象都有一个next方法,调用后会返回下一个条目。所有条目迭代完后,迭代器会引发StopIteration异常告诉程序循环结束。for语句会自动(不需要程序员处理)调用迭代器的next方法,捕获StopIteration异常并结束循环。当用for语句循环迭代一个对象条目时,不需要区分对象是迭代器还是序列,因为for语句操作序列和迭代器在前台是没有区别的。 

(1)创建迭代器 

Python的内建函数iter可以返回一个迭代器对象。iter函数有两种使用格式,分别为:

图示(https://www.xing528.com)

要求参数collection必须是序列或者是实现了_iter_()方法和next()方法的类。

图示

这种形式中callable会不断被调用,直至遇到sentinel

(2)序列迭代器 

对序列调用iter函数即返回序列迭代器,如: 

图示

由上例可以看到迭代器存在限制,不能向后移动,不能回到开始,也不能复制一个迭代器。在上例中建立迭代器iyz后,调用了一次next方法,回头再用for循环迭代iyz时,是从第2项list开始的。 

(3)字典迭代器 

字典可以通过键(iterkeys())、值(itervalues())或者键-值(iteritems())对来迭代。在只给出字典名的情况下,for循环会遍历字典的键,即: 

图示

等价于

图示

下面编程显示电话簿中所有信息(ch3-12.py)。 

分析:利用字典来存储电话簿,利用for语句遍历输出电话簿信息。

图示

运行程序,运行结果如下:

图示

图示

使用iterkeys()方法改写程序,代码如下(ch3-12-1.py):

图示

使用iteritems()方法改写程序,代码如下(ch3-12-2.py):

图示

在Python 3.x中,字典对象不再支持iterkeys()、itervalues()和iteritems(),取而代之的是key()、values()和item()。 

(4)文件迭代器 

文件对象生成的迭代器会自动调用readline()方法,即: 

图示

等价于

图示

下面读出并显示文本文件中的所有内容(ch3-13.py) 

分析:打开文件后,用for语句遍历文件每一行并输出。

图示

文件ch3_13.txt中的内容如图3-2所示:

图示

图3-2 文本文件中的内容

运行程序,输出结果如下

图示

5.列表解析 

for语句也可以用于列表解析中。列表解析是一个非常简洁高效的工具,可以动态地创建列表。列表解析的使用格式如下: 

图示

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈