Python程序设计教程(第2版)
上QQ阅读APP看书,第一时间看更新

3.2.2 for语句

for语句通过遍历一个序列(字符串、列表、元组)或可迭代对象中的每个元素来建立循环。

for语句的语法形式如下所示:

简单的for语句执行流程如图3.7所示。

图3.7 简单for语句执行流程图

循环开始时,for关键词后面的循环控制变量从in关键词后面的序列或可迭代对象中取值,如果没有取到值,则不进入循环;如果序列或可迭代对象中有值可取,则取到最前面的值,接着执行循环体。循环体执行完成后,循环控制变量继续取序列或可迭代对象的下一个值,如果没有值可取了,则终止循环;否则取到下一个值后继续执行循环体;然后重复以上过程,直到序列或可迭代对象中没有值可取,循环终止。

1. 用for循环遍历序列中的元素

【例3-8】 用列表存储若干城市的名称,利用for循环逐一输出城市名称。

程序代码:

程序运行结果:

程序example3_8.py中的变量name访问到nameList中的每个字符串。print语句结束时不换行,而是添加一个空格。

2. 用for循环遍历可迭代对象

Python 3开始,函数range返回可迭代对象。本节以遍历range函数返回的可迭代对象为例,讲解用for循环遍历可迭代对象。

range函数的语法格式如下:

功能:

产生一个从start开始(包括start),到stop结束(不包括stop),两个整数对象之间间隔step的可迭代对象。

参数说明:

(1)start:可迭代对象的开始值为start,默认是从0开始。例如range(6)等价于range(0,6);

(2)stop:可迭代对象到stop结束,但不包括stop。例如:range(0,6)产生包含0,1,2,3,4,5的可迭代对象,但没有6;

(3)step:步长,表示所产生的可迭代对象元素之间的间隔,默认为1。例如:range(0,6)等价于range(0,6,1)。步长也可以是负数,这时开始值大于结束值。

用range函数产生的是一个可迭代的range对象,例如:

range对象可以被转换成列表或元组,例如:

可以用for循环直接遍历range函数产生的可迭代对象。用for循环遍历一些range所产生的可迭代对象例子如下:

执行结果为:0 1 2 3 4 5 6 7 8 9

执行结果为:0 1 2 3 4 5 6 7 8 9

执行结果为:3 4 5 6 7 8 9 10 11 12 13 14

执行结果为:3 4 5 6 7 8 9 10 11 12 13 14

执行结果为:3 5 7 9 11 13

执行结果为:15 13 11 9 7 5

range函数经常被用到for语句中,用于遍历序列的索引值。例3-8也可以使用以下方法实现。

程序运行结果:

语句range(len(nameList))先求len(nameList)的值为6;然后执行range(6),生成包含0、1、2、3、4、5的可迭代对象。i是for语句的循环控制变量,依次取可迭代对象中的值。将这个值作为访问列表nameList中元素的索引(即元素在列表中所处的位置)。通过nameList[i]语句获取索引i对应的列表中的元素。