Python for
循环的语法
for iterating_var in sequence:
statement(s)
在这里,iterating_var
是一个变量,每次迭代时将赋值为序列中的当前项。statements
表示你想要反复执行的代码块。
在循环开始之前,会先评估序列。如果是列表,则先计算列表表达式(如果有)。然后,将序列的第一个元素(索引为 0)分配给 iterating_var
变量。
在每次迭代期间,会用 iterating_var
的当前值执行代码块。之后,将序列中的下一个元素赋值给 iterating_var
,循环继续直到整个序列被耗尽。
Python for
循环流程图
Python for
循环与字符串
字符串是由 Unicode 字符组成的序列,每个字符都有一个位置索引。由于它是序列,因此可以使用 for
循环来遍历其字符。
示例
下面的例子比较了每个字符,并显示如果不是元音('a','e','i','o','u')。
zen = '''
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
'''
for char in zen:
if char not in 'aeiou':
print(char, end='')
执行此代码将产生以下输出:
Btfl s bttr thn gly.
Explct s bttr thn mplct.
Smpl s bttr thn cmplx.
Cmplx s bttr thn cmplctd.
Python for
循环与元组
Python 中的元组对象也是一个索引化的序列,因此你可以使用 for
循环来遍历其元素。
示例
下面的例子中,for
循环遍历包含整数的元组,并返回所有数字的总和。
numbers = (34, 54, 67, 21, 78, 97, 45, 44, 80, 19)
total = 0
for num in numbers:
total += num
print("Total =", total)
执行此代码将产生以下输出:
Total = 539
Python for
循环与列表
Python 中的列表对象也是一个索引化的序列,因此你可以使用 for
循环来遍历其元素。
示例
下面的例子中,for
循环遍历包含整数的列表,并打印出那些可以被 2 整除的数字。
numbers = [34, 54, 67, 21, 78, 97, 45, 44, 80, 19]
for num in numbers:
if num % 2 == 0:
print(num)
执行此代码将显示以下结果:
34
54
78
44
80
Python for
循环与范围对象
Python 内置的 range()
函数返回一个迭代器对象,该对象流式传输一系列数字。此对象包含从起始值到结束值减一的所有整数,它们之间间隔为步长参数。你也可以使用 range
运行 for
循环。
range()
函数的语法
range(start, stop, step)
其中,
-
-
-
step
- 范围中的整数按步长值递增。可选,默认是 1。
示例
下面的例子演示了 range
与 for
循环的使用。
for num in range(5):
print(num, end=' ')
print()
for num in range(10, 20):
print(num, end=' ')
print()
for num in range(1, 10, 2):
print(num, end=' ')
执行上述代码将产生以下输出:
0 1 2 3 4
10 11 12 13 14 15 16 17 18 19
1 3 5 7 9
Python for
循环与字典
与列表、元组或字符串不同,Python 中的字典型数据不是序列,因为项没有位置索引。然而,仍然可以使用 for
循环来遍历字典。
示例
运行简单的 for
循环遍历字典对象会遍历字典中使用的键。
numbers = {10: "Ten", 20: "Twenty", 30: "Thirty", 40: "Forty"}
for x in numbers:
print(x)
执行此代码将产生以下输出:
10
20
30
40
一旦我们能够获取到键,就可以很容易地通过使用方括号运算符或 get()
方法来访问其关联的值。
示例
下面的例子说明了上述方法。
numbers = {10: "Ten", 20: "Twenty", 30: "Thirty", 40: "Forty"}
for x in numbers:
print(x, ":", numbers[x])
它将产生以下输出:
10 : Ten
20 : Twenty
30 : Thirty
40 : Forty
dict
类的 items()
,keys()
和 values()
方法分别返回视图对象 dict_items
,dict_keys
和 dict_values
。这些对象是迭代器,因此可以在它们之上运行 for
循环。
示例
dict_items
对象是一个键值对元组的列表,可以在其上运行 for
循环如下:
numbers = {10: "Ten", 20: "Twenty", 30: "Thirty", 40: "Forty"}
for x in numbers.items():
print(x)
它将产生以下输出:
(10, 'Ten')
(20, 'Twenty')
(30, 'Thirty')
(40, 'Forty')
使用 else
语句与 for
循环
Python 支持在循环语句中关联 else
语句。但是,只有当循环已经耗尽了列表时,else
语句才会执行。
示例
下面的例子说明了 else
语句与 for
语句的组合,用来寻找从 10 到 20 的质数。
for num in range(10, 20):
for i in range(2, num):
if num % i == 0:
j = num / i
print("%d 等于 %d * %d" % (num, i, j))
break
else:
print(num, "是一个质数")
break
当执行上述代码时,它会产生以下结果:
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数