Python for 循环

在 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) 返回序列 0123

由于 range() 函数返回一个数字序列,我们可以使用 for 循环对其进行迭代。例如,

# iterate from i = 0 to i = 3
for i in range(0, 4):
    print(i)

输出

0
1
2
3

这里,我们使用 for 循环来迭代从 03 的范围。

上面的程序是这样工作的。

迭代 i 的值 print(i) 序列中的最后一项?
第 1 次 0 打印 0
循环体执行。
第 2 次 1 打印 1
循环体执行。
第 3 次 2 打印 2
循环体执行。
第 4 次 3 打印 3
循环体执行,循环终止。

break 和 continue 语句

breakcontinue 语句用于改变循环的流程。


break 语句

break 语句在遍历所有项之前立即终止 for 循环。例如,

languages = ['Swift', 'Python', 'Go', 'C++']

for lang in languages:
    if lang == 'Go':
        break
    print(lang)

输出

Swift
Python

这里,当 lang 等于 'Go' 时,if 条件内的 break 语句执行,这会立即终止循环。这就是为什么没有打印 GoC++ 的原因。


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。由于我们在循环体中没有使用序列(0124)的项,因此最好使用 _ 作为循环变量。

另请阅读: Python while 循环

在结束之前,让我们测试一下您对 Python for 循环的知识!您能解决以下挑战吗?

挑战

编写一个函数来计算一个数字的阶乘。

  • 非负整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。
  • 例如,如果 n5,返回值应该是 120,因为 1*2*3*4*5120

视频:Python for 循环

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战