在 Python 中,我们使用 for
循环来遍历 列表、字符串、字典 等序列。例如:
languages = ['Swift', 'Python', 'Go']
# access elements of the list one by one
for lang in languages:
print(lang)
输出
Swift Python Go
在上面的示例中,我们创建了一个名为 languages 的列表。由于列表有三个元素,循环会迭代 3 次。
在第一次迭代中,lang
的值为 Swift
。
Swift
在第一次迭代中。Python
在第二次迭代中。Go
在第三次迭代中。
for 循环语法
for val in sequence:
# run this code
for
循环按顺序遍历 sequence 的元素,并且在每次迭代中,都会执行循环体。
在对最后一个项目执行循环体后,循环结束。
循环中的缩进
在 Python 中,我们使用缩进(行首的空格)来定义代码块,例如循环体。例如,
languages = ['Swift', 'Python', 'Go']
# start of the loop
for lang in languages:
print(lang)
print('-----')
# end of the for loop
print('Last statement')
输出
Swift ----- Python ----- Go ----- Last statement
这里,print('Last statement')
在循环体之外。因此,这条语句只在最后执行一次。
示例:遍历字符串
如果我们遍历一个字符串,我们会一个接一个地获取字符串的单个字符。
language = 'Python'
# iterate over each character in language
for x in language:
print(x)
输出
P y t h o n
这里,我们使用 for
循环打印了字符串 language 的每个字符。
带 Python range() 的 for 循环
在 Python 中,range() 函数返回一个数字序列。例如,
# generate numbers from 0 to 3
values = range(0, 4)
这里,range(0, 4)
返回序列 0、1、2 和 3。
由于 range()
函数返回一个数字序列,我们可以使用 for
循环对其进行迭代。例如,
# iterate from i = 0 to i = 3
for i in range(0, 4):
print(i)
输出
0 1 2 3
这里,我们使用 for
循环来迭代从 0 到 3 的范围。
上面的程序是这样工作的。
迭代 | i 的值 |
print(i) |
序列中的最后一项? |
---|---|---|---|
第 1 次 | 0 |
打印 0 |
否 循环体执行。 |
第 2 次 | 1 |
打印 1 |
否 循环体执行。 |
第 3 次 | 2 |
打印 2 |
否 循环体执行。 |
第 4 次 | 3 |
打印 3 |
是 循环体执行,循环终止。 |
break 和 continue 语句
break
和 continue
语句用于改变循环的流程。
break 语句
break
语句在遍历所有项之前立即终止 for
循环。例如,
languages = ['Swift', 'Python', 'Go', 'C++']
for lang in languages:
if lang == 'Go':
break
print(lang)
输出
Swift Python
这里,当 lang
等于 'Go'
时,if
条件内的 break
语句执行,这会立即终止循环。这就是为什么没有打印 Go
和 C++
的原因。
continue 语句
continue
语句跳过循环的当前迭代并继续下一次迭代。例如,
languages = ['Swift', 'Python', 'Go', 'C++']
for lang in languages:
if lang == 'Go':
continue
print(lang)
输出
Swift Python C++
这里,当 lang
等于 'Go'
时,continue
语句执行,这会跳过该迭代中循环内部的剩余代码。
然而,循环会继续到下一次迭代。这就是为什么输出中显示 C++
。
访问 Python break 和 continue 文章了解更多。
嵌套 for 循环
一个循环也可以包含另一个循环。这些循环被称为嵌套循环。
在嵌套循环中,内层循环在每次外层循环迭代时执行一次。
# outer loop
attributes = ['Electric', 'Fast']
cars = ['Tesla', 'Porsche', 'Mercedes']
for attribute in attributes:
for car in cars:
print(attribute, car)
# this statement is outside the inner loop
print("-----")
输出
Electric Tesla Electric Porsche Electric Mercedes ----- Fast Tesla Fast Porsche Fast Mercedes -----
不访问序列项的 for 循环
如果我们不打算在循环体内部使用序列项,则使用 _
(下划线)作为循环变量会更清晰。例如,
# iterate from i = 0 to 3
for _ in range(0, 4:
print('Hi')
输出
0 1 2 3
这里,循环运行四次。在每次迭代中,我们都显示了 Hi
。由于我们在循环体中没有使用序列(0、1、2 和 4)的项,因此最好使用 _
作为循环变量。
另请阅读: Python while 循环