
3.3.2 for循环
for循环用于遍历一个集合,依次访问集合中的每个项目。for循环的格式如下所示。
01 for 变量 in 集合: 02 … 03 else: 04 …
for…in…循环的执行过程:每次循环从集合中取出一个值,并把该值赋值给变量。集合可以是元组、列表、字典等数据结构。其中else子句可以省略。
注意 for循环中的else子句也属于循环的一部分,最后一次循环结束后将执行else子句。
for…in…循环通常与range()函数一起使用,range()返回一个列表,for…in…遍历列表中的元素。range()函数的声明如下:
class range(object) range(stop) -> range object range(start, stop[, step]) -> range object
【代码说明】range()返回一个range对象,列表的元素值由3个参数决定:参数start表示列表开始的值,默认值为0;参数stop表示列表结束的值,该参数不可缺少;参数setp表示步长,即每次递增或递减的值,默认值为1。
下面【例3-7】中的这段代码遍历range()生成的列表,过滤出正数、负数和0。
【例3-7.py】
01 # for in语句 02 for x in range(-1, 2): 03 if x > 0: 04 print ("正数:",x) 05 elif x == 0 : 06 print ("零:",x) 07 else: 08 print ("负数:",x) 09 else: 10 print ("循环结束")
【代码说明】
·第2行代码遍历range(-1,2)生成的列表。range(-1,2)返回的3个数字分别为-1、0、1。每次循环结束,变量x的值依次为-1、0、1。
·第3行代码判断变量x的值是否大于0。
·第4行代码输出正数的值。输出结果为“正数:1”。
·第5行代码判断变量x的值是否等于0。
·第6行代码,输出结果为“零:0”。
·第8行代码,输出负数的值。输出结果为“负数:-1”。
·第9行代码并没有结束for循环,else子句执行后循环才结束。输出结果为“负数:-1”。
在C、Java语言中,支持如下结构的for语句。
for(表达式1; 表达式2; 表达式3) 语句块
Python不支持这样的for循环。如果需要编写类似功能的循环,可以使用while循环。例如:
01 x = 0 02 while x < 5: 03 print(x) 04 x = x + 2
while循环的写法比较琐碎,需要比较判断。因此,对此也可以使用for循环,借助range()函数来实现。例如:
01 for x in range(0, 5, 2): 02 print (x)
【代码说明】输出的数字在[0,5)这个区间,不包括5。每次循环结束,x的值加2。输出结果:
0 2 4
这里只用了两行代码就实现了传统for循环。如果要用条件表达式作为循环的条件,可以构造range()函数来实现。