Python for 循环 提供了循环访问任何序列的项目的能力,例如列表、元组或字符串。它对序列的每个项目执行相同的操作。此循环以 for 关键字开头,后跟表示序列中当前项目的变量。关键字 in 将变量链接到要迭代的序列。冒号 (:) 在循环标头的末尾使用,其下方的缩进代码块对序列中的每个项执行一次。
Python for 循环的语法
for iterating_var in sequence:
statement(s)
此处,iterating_var 是一个变量,在每次迭代期间,每个序列项的值都将分配给该变量。Statements 表示要重复执行的代码块。
在循环开始之前,将对序列进行评估。如果是列表,则首先计算表达式列表(如果有)。然后,将序列中的第一项(索引 0 处)分配给 iterating_var 变量。
在每次迭代期间,语句块以当前值 iterating_var 执行。之后,将序列中的下一项分配给 iterating_var,循环将继续,直到整个序列用完。
Python for 循环流程图
以程图说明了 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='')
在执行时,此代码将生成以下输出 -
Explct s bttr thn mplct.
Smpl s bttr thn cmplx.
Cmplx s bttr thn cmplctd.
Python for 循环与tuples
Python 的 tuples 对象也是一个索引序列,因此你可以使用 for 循环遍历其项目。
例在下面的示例中,for 循环遍历包含整数的元组并返回所有数字的总数。
numbers = (34,54,67,21,78,97,45,44,80,19)
total = 0
for num in numbers:
total += num
print ("Total =", total)
在运行此代码时,它将生成以下输出 -
Python for 循环与列表
Python 的 list 对象也是一个索引序列,因此你可以使用 for 循环迭代其项目。
例在下面的示例中,for 循环遍历包含整数的列表,并仅打印可被 2 整除的整数。
numbers = [34,54,67,21,78,97,45,44,80,19]
total = 0
for num in numbers:
if num%2 == 0:
print (num)
当您执行此代码时,它将显示以下结果 -
54
78
44
80
带 Range 对象的 for 循环
Python 内置 range() 函数返回一个迭代器对象,该对象流式传输数字序列。此对象包含从 start 到 stop 的整数,由 step 参数分隔。你也可以运行一个 for 循环 和 range 一样。
语法
range() 函数具有以下语法 -
range(start, stop, step)
参数
- Start - 范围的起始值。自选。默认值为 0
- Stop − 范围上升到 stop-1
- 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=' ')
当您运行上述代码时,它将产生以下输出 -
10 11 12 13 14 15 16 17 18 19
1 3 5 7 9
带有字典的 for 循环
与列表、 元组或字符串不同,Python 的 字典 数据类型不是序列,因为项目没有位置索引。但是,仍然可以使用 for 循环遍历字典。
示例
对词典对象运行简单的 for 循环会遍历其中使用的键。
numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
print (x)
在执行时,此代码将生成以下输出 -
20
30
40
一旦我们能够获取密钥,就可以通过使用方括号运算符或 get() 方法轻松访问其关联值。
示例
以下示例说明了上述方法。
numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
print (x,":",numbers[x])
它将产生以下输出 -
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)
它将产生以下输出 -
(20, 'Twenty')
(30, 'Thirty')
(40, 'Forty')
else 语句与 For 循环一起使用
Python 支持将 else 语句与 loop 语句相关联。但是,当循环用尽迭代列表时,将执行 else 语句。
示例
以下示例说明了 else 语句与 for 语句的组合,该语句搜索从 10 到 20 的质数。
# For循环在10到20之间迭代
for num in range(10, 20):
# For循环迭代因子
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
执行上述代码时,它会产生以下结果 -
11 是素数
12 等于 2 * 6
13 是素数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是素数
18 等于 2 * 9
19 是素数