使用 for 循环,我们可以重复执行一段代码。让我们看一个例子:

one_to_ten = range(1, 11)
for count in one_to_ten:
    print(count)

这段代码的输出如下:

1
2
3
4
5
6
7
8
9
10

这个输出看起来很熟悉,但程序代码不同。第一行使用了 range 函数。range 函数有两个参数,如 range(start, finish)start 是生成的第一个数字,finish 是比最后一个数字大 1 的数字。注意,这段程序可以用更简短的方式写成:

for count in range(1, 11):
    print(count)

range 函数返回一个可迭代对象。它可以通过 list 函数转换为列表,之后将成为主导数字。以下是一些例子,展示 range 命令的效果:

>>> range(1, 10)
range(1, 10)
>>> list(range(1, 10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(-32, -20))
[-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21]
>>> list(range(5,21))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(21, 5))
[]

接下来的行 for count in one_to_ten: 使用了 for 控制结构。for 控制结构看起来像 for variable in list:。程序会从列表的第一个元素开始遍历,直到最后一个元素。每次循环时,for 会把列表中的每个元素放入 variable 中。这使得 variable 可以在每次 for 循环执行时使用。这里是另一个例子(你不需要键入这个)来演示:

demolist = ['life', 42, 'the universe', 6, 'and', 7, 'everything']
for item in demolist:
    print("当前项是:", item)

输出为:

当前项是: life
当前项是: 42
当前项是: the universe
当前项是: 6
当前项是: and
当前项是: 7
当前项是: everything

注意,for 循环如何遍历列表,并将每个元素设置为 item。那么,for 循环有什么用呢?它的第一个用途是遍历列表的所有元素并对每个元素做一些操作。这里有一种快速的方法来计算所有元素的总和:

list = [2, 4, 6, 8]
sum = 0
for num in list:
    sum = sum + num

print("总和是:", sum)

输出结果是:

总和是: 20

或者你可以写一个程序来查找列表中是否有重复项,就像这个程序做的那样:

list = [4, 5, 7, 8, 9, 1, 0, 7, 10]
list.sort()
prev = None
for item in list:
    if prev == item:
        print("找到重复项:", prev)
    prev = item

输出为:

找到重复项: 7

好吧,那么它是如何工作的呢?这是一个特殊的调试版本,帮助你理解(你不需要键入这个):

l = [4, 5, 7, 8, 9, 1, 0, 7, 10]
print("l = [4, 5, 7, 8, 9, 1, 0, 7, 10]", "\t\tl:", l)
l.sort()
print("l.sort()", "\t\tl:", l)
prev = l[0]
print("prev = l[0]", "\t\tprev:", prev)
del l[0]
print("del l[0]", "\t\tl:", l)
for item in l:
    if prev == item:
        print("找到重复项:", prev)
    print("if prev == item:", "\t\tprev:", prev, "\titem:", item)
    prev = item
    print("prev = item", "\t\tprev:", prev, "\titem:", item)

输出结果为:

l = [4, 5, 7, 8, 9, 1, 0, 7, 10]        l: [4, 5, 7, 8, 9, 1, 0, 7, 10]
l.sort()                l: [0, 1, 4, 5, 7, 7, 8, 9, 10]
prev = l[0]             prev: 0
del l[0]                l: [1, 4, 5, 7, 7, 8, 9, 10]
if prev == item:        prev: 0         item: 1
prev = item             prev: 1         item: 1
if prev == item:        prev: 1         item: 4
prev = item             prev: 4         item: 4
if prev == item:        prev: 4         item: 5
prev = item             prev: 5         item: 5
if prev == item:        prev: 5         item: 7
prev = item             prev: 7         item: 7
找到重复项: 7
if prev == item:        prev: 7         item: 7
prev = item             prev: 7         item: 7
if prev == item:        prev: 7         item: 8
prev = item             prev: 8         item: 8
if prev == item:        prev: 8         item: 9
prev = item             prev: 9         item: 9
if prev == item:        prev: 9         item: 10
prev = item             prev: 10        item: 10

我在代码中加入了很多 print 语句,以便你可以看到每一行的执行情况。(顺便说一下,如果你无法弄清楚为什么程序没有正常工作,可以在你想了解的地方加上很多 print 语句。)首先,程序从一个普通的列表开始。接着,程序对列表进行排序,这样任何重复项都会排在一起。然后程序初始化了一个 prev(前一个)变量。接下来,删除列表中的第一个元素,以避免将第一个项错误地认为是重复的。然后进入 for 循环,检查列表中的每个元素是否与前一个元素相同。如果相同,则找到了重复项。prev 的值会被更新,以便下次 for 循环执行时,prev 是当前项的前一个元素。果然,7 被找到了是重复项。(注意 \t 是用来打印制表符的。)

for 循环的另一种用法是做一些特定次数的操作。以下是一个代码示例,打印斐波那契数列的前 9 个数字:

a = 1
b = 1
for c in range(1, 10):
    print(a, end=" ")
    n = a + b
    a = b
    b = n

输出为:

1 1 2 3 5 8 13 21 34

所有可以通过 for 循环完成的事情,也可以通过 while 循环来实现,但 for 循环提供了一种简便的方法来遍历列表中的所有元素,或者执行一定次数的操作。

Last modified: Saturday, 11 January 2025, 11:30 AM