如何在Python3中构造For循环

来自菜鸟教程
跳转至:导航、​搜索

在计算机编程中使用循环允许我们多次自动化和重复类似的任务。 在本教程中,我们将介绍 Python 的 for 循环

for 循环基于循环计数器或循环变量实现代码的重复执行。 这意味着当在进入循环之前知道迭代次数时,最常使用 for 循环,这与基于条件的 while 循环 不同。

先决条件

您应该在您的计算机或服务器上安装 Python 3 并设置编程环境。 如果您没有设置编程环境,您可以参考本地编程环境或服务器上的编程环境适合您的操作的安装和设置指南系统(Ubuntu、CentOS、Debian 等)

For 循环

在 Python 中,for 循环的构造如下:

for [iterating variable] in [sequence]:
    [do something]

正在执行的 something 将一直执行到序列结束。

Info: 要跟随本教程中的示例代码,请通过运行 python3 命令在本地系统上打开 Python 交互式 shell。 然后,您可以通过在 >>> 提示符后添加示例来复制、粘贴或编辑示例。


让我们看一下迭代一系列值的 for 循环:

for i in range(0,5):
   print(i)

当我们运行这个程序时,输出会生成:

Output0
1
2
3
4

这个for循环将i设置为它的迭代变量,序列存在于0到5的范围内。

然后在循环中,我们每次循环迭代打印一个整数。 请记住,在编程中我们倾向于从索引 0 开始,这就是为什么虽然打印了 5 个数字,但它们的范围是 0-4。

当程序需要多次重复一段代码时,您通常会看到并使用 for 循环。

使用 range() 循环

Python 的内置不可变序列类型之一是 range()。 在循环中,range() 用于控制循环将重复多少次。

使用 range() 时,您可以向其传递 1 到 3 个整数参数:

  • start 表示序列开始的整数值,如果不包括,则 start 从 0 开始
  • stop 始终是必需的,是被计数但不包括在内的整数
  • step 设置下一次迭代增加多少(或在负数的情况下减少),如果省略,则 step 默认为 1

我们将回顾一些将不同参数传递给 range() 的示例。

首先,让我们只传递 stop 参数,这样我们的序列设置为 range(stop)

for i in range(6):
   print(i)

在上面的程序中,stop 参数为 6,因此代码将从 0-6 迭代(不包括 6):

Output0
1
2
3
4
5

接下来,我们将查看 range(start, stop),其中传递了迭代应该何时开始和何时停止的值:

for i in range(20,25):
   print(i)

这里,范围从 20(包括)到 25(不包括),所以输出如下:

Output20
21
22
23
24

range()step 参数类似于 在切片字符串时指定步幅 ,因为它可用于跳过序列中的值。

使用所有三个参数,step 进入最终位置:range(start, stop, step)。 首先,让我们使用具有正值的 step

for i in range(0,15,3):
   print(i)

在这种情况下,设置了 for 循环,以便打印从 0 到 15 的数字,但在 step 为 3 时,只打印每三个数字,如下所示:

Output0
3
6
9
12

我们也可以为我们的 step 参数使用负值来向后迭代,但我们必须相应地调整我们的 startstop 参数:

for i in range(100,0,-10):
   print(i)

这里,100 是 start 的值,0 是 stop 的值,-10 是范围,所以循环从 100 开始,到 0 结束,减 10每次迭代。 这发生在输出中:

Output100
90
80
70
60
50
40
30
20
10

在 Python 中编程时,for 循环通常使用 range() 序列类型作为其迭代参数。

使用顺序数据类型的 For 循环

Lists 和其他数据序列类型也可以用作 for 循环中的迭代参数。 您可以定义一个列表并遍历该列表,而不是遍历 range()

我们将一个列表分配给一个变量,然后遍历该列表:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

在这种情况下,我们打印出列表中的每个项目。 虽然我们使用了变量 shark,但我们可以将变量称为任何其他 有效的变量名 ,我们会得到相同的输出:

Outputhammerhead
great white
dogfish
frilled
bullhead
requiem

上面的输出显示 for 循环遍历列表,并按行打印列表中的每个项目。

列表和其他基于序列的 数据类型 ,例如 stringstuples,通常用于循环,因为它们是可迭代的。 您可以将这些数据类型与 range() 组合以将项目添加到列表中,例如:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for item in range(len(sharks)):
   sharks.append('shark')

print(sharks)
Output['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

在这里,我们为 sharks 列表长度的每一项添加了一个占位符字符串 'shark'

您还可以使用 for 循环从头开始构造列表:

integers = []

for i in range(10):
   integers.append(i)

print(integers)

在这个例子中,列表 integers 被初始化为空,但是 for 循环像这样填充列表:

Output[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

同样,我们可以遍历字符串:

sammy = 'Sammy'

for letter in sammy:
   print(letter)
OutputS
a
m
m
y

遍历 tuples 的格式与遍历上述列表或字符串的格式相同。

在遍历 dictionary 时,务必牢记 key : value 结构,以确保调用字典的正确元素。 这是一个同时调用键和值的示例:

sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}

for key in sammy_shark:
   print(key + ': ' + sammy_shark[key])
Outputname: Sammy
animal: shark
location: ocean
color: blue

当使用带有 for 循环的字典时,迭代变量对应字典的键,而 dictionary_variable[iterating_variable] 对应于值。 在上面的例子中,迭代变量 key 用于表示键,sammy_shark[key] 用于表示值。

循环通常用于迭代和操作顺序数据类型。

嵌套 For 循环

循环可以嵌套在 Python 中,就像其他编程语言一样。

嵌套循环是发生在另一个循环中的循环,在结构上类似于 嵌套 if 语句 。 这些是这样构造的:

for [first iterating variable] in [outer loop]: # Outer loop
    [do something]  # Optional
    for [second iterating variable] in [nested loop]:   # Nested loop
        [do something]  

程序首先遇到外循环,执行它的第一次迭代。 第一次迭代触发内部嵌套循环,然后运行完成。 然后程序返回到外部循环的顶部,完成第二次迭代并再次触发嵌套循环。 同样,嵌套循环运行完成,程序返回到外部循环的顶部,直到序列完成或 break 或其他语句中断该过程。

让我们实现一个嵌套的 for 循环,以便我们仔细看看。 在这个例子中,外部循环将遍历一个名为 num_list 的整数列表,而内部循环将遍历一个名为 alpha_list 的字符串列表。

num_list = [1, 2, 3]
alpha_list = ['a', 'b', 'c']

for number in num_list:
    print(number)
    for letter in alpha_list:
        print(letter)

当我们运行这个程序时,我们将收到以下输出:

Output1
a
b
c
2
a
b
c
3
a
b
c

输出说明程序通过打印 1 完成了外循环的第一次迭代,然后触发内循环的完成,打印 a, b, c 连续。 内循环完成后,程序返回到外循环的顶部,打印 2,然后再次打印整个内循环(abc)等。

嵌套的 for 循环可用于迭代由列表组成的列表中的项目。 在由列表组成的列表中,如果我们只使用一个 for 循环,程序会将每个内部列表作为一项输出:

list_of_lists = [['hammerhead', 'great white', 'dogfish'],[0, 1, 2],[9.9, 8.8, 7.7]]

for list in list_of_lists:
    print(list)
Output['hammerhead', 'great white', 'dogfish']
[0, 1, 2]
[9.9, 8.8, 7.7]

为了访问内部列表的每一项,我们将实现一个嵌套的 for 循环:

list_of_lists = [['hammerhead', 'great white', 'dogfish'],[0, 1, 2],[9.9, 8.8, 7.7]]

for list in list_of_lists:
    for item in list:
        print(item)
Outputhammerhead
great white
dogfish
0
1
2
9.9
8.8
7.7

当我们使用嵌套的 for 循环时,我们能够迭代列表中包含的各个项目。

在我们关于 Natural Language Processing Toolkit (NLTK) 的教程中,我们可以看到嵌套的 for 循环在工作程序中使用。

结论

本教程介绍了 for 循环如何在 Python 中工作以及如何构造它们。 For 循环 继续循环通过提供一定次数的代码块。

从这里,您可以通过阅读有关 while 循环中断、继续和传递语句 的教程来继续了解循环。

要在项目中使用 for 循环,请遵循以下教程: