Python 中的 For 循环:你需要知道的一切
已发表: 2022-08-18本教程将通过代码示例教您如何在 Python 中使用 for 循环。
在编程中,循环可帮助您重复一组特定的语句。 在以下情况下,您将使用for循环进行明确的迭代:
- 你知道你将处理一个元素数量有限的序列
- 您会事先看到重复次数
本教程将教你如何在 Python 中使用 for 循环。 您将从学习语法和使用 for 循环的简单迭代开始。 然后,您将了解处理命令行参数、使用循环控制语句等。
让我们开始吧…
Python for 循环的语法

在 Python 中使用 for 循环的通用语法如下:
for item in iterable: # do something on item statement_1 statement_2 . . . statement_n
在上面的语法中:
- item是循环变量。
- iterable表示任何 Python 可迭代对象,例如列表、元组和字符串。
- statement_1到statement_n表示循环体中的语句。
注意:请务必在可迭代的名称后添加一个冒号 ( :
,并将循环体中的所有语句缩进四个空格。
Python中常见的循环构造

使用for循环时:
- 您可以使用上一节中讨论的语法直接访问这些项目。
- 您可以将 for 循环与 Python 内置函数(例如
range()
和enumerate()
结合使用。
我们将在本节中介绍它们。
使用 for 循环访问元素
为了提高可读性,您应该选择一个循环变量来指示列表包含的内容。 例如,在下面的示例中, nums
是我们使用num
作为循环变量的数字列表。 请注意for num in nums:
是如何直观且易于阅读的。
nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3
添加更多示例,您可以使用for fruit in fruits:
和for student in students:
当分别循环遍历fruits
和students
列表时。
使用带有 range() 函数的 for 循环
当您想通过其索引访问列表项时,可以使用range()
函数。
在 Python 中,
range(start, stop, step)
返回一个范围对象,您可以循环获取索引:start
、start + step
等,直到但不包括stop
。
for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3
您还可以使用range()
函数生成要循环的数字序列。 在下面的示例中,我们将可选step
参数设置为 2。因此,我们以 2 为步长获取从 10 到但不包括 20 的数字。
for i in range(10,20,2): print(i) # Output 10 12 14 16 18
将 for 循环与 enumerate() 函数一起使用
当您想要遍历一个可迭代对象并同时访问项目及其索引时,您可以使用 enumerate() 函数。
这是一个例子。
for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3

如何在 Python 中使用 for 循环从列表中读取项目
要使用 for 循环遍历 Python 列表,您可以使用上一节中的通用语法。
在下面的示例中, nums
是可迭代的,num 是循环变量。
nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9
如何在 Python 中使用 for 循环遍历字符串
Python 字符串是可迭代的,您可以执行循环、索引、切片等。
注意:Python 没有内置的字符数据类型。 因此,您可以将字符视为长度为 1 的字符串。
my_string = "Code" for char in my_string: print(char) # Output C o d e
如何在 Python 中使用 for 循环遍历数组

您可以使用循环遍历数组并嵌套 for 循环。
在下面的代码片段中,array1 是一个嵌套列表,其中包含较小的列表作为其元素。 因此,遍历 array1 会给出每一行,如下所示。
array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]
要访问每一行中的单个元素,您可以使用另一个for
循环。
array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)
在上面的代码单元格中:
- 外部 for 循环可帮助您索引行。
- 内部 for 循环使您能够利用每一行中的元素。
这是相应的输出。
Output 2 3 7 8
如何使用 for 循环读取命令行参数

作为开发人员,您应该能够从命令行运行 Python 脚本并使用命令行参数与您的脚本进行交互。
您可以使用 Python 的内置模块(例如 sys 和 argparse)来解析和读取命令行参数。
在本节中,我们将讨论如何使用sys
模块和使用for
循环——循环遍历命令行参数列表。
在 sys 模块中, sys.argv
是您传入的命令行参数列表。因此您可以像遍历任何 Python 列表一样遍历sys.argv
。
# main.py import sys for arg in sys.argv: print(arg)
您现在可以从命令行运行程序,如下所示。
$ python main.py Hello Python3 main.py Hello Python3
默认情况下,模块的名称是第一个参数,并且在sys.argv
中的索引为零。
如果要访问索引和相应的参数,可以使用range()
函数。
# main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
️ 接下来,重新运行 main.py。
$ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3
假设您想要解析和处理模块名称以外的参数。 您可以将起始值设置为 1,如下面的代码单元格所示。
# main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
$ python main.py Hello Python3 arg1 is Hello arg2 is Python3

综上所述, main.py 文件包含以下代码。

# main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
这是运行模块时的输出。
$ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3
如何在 for 循环中使用 break 语句

与其他编程语言一样,Python 也支持使用循环控制语句break
和continue
。 这些语句可以根据某些条件帮助改变循环中的控制流。 让我们看看如何在 for 循环中使用它们。
当特定条件为True
时, break
语句可用于跳出循环。
我们想编写一个程序来执行以下操作:
- 固定
k
,输入的数量。 - 使用
for
循环读取用户输入——一次一个数字,并对非负数(大于或等于零)求和。 - 只要用户输入非负数,这个过程就应该继续。
- 当用户输入负数时,退出循环并打印出总和。
这是执行上述任务的代码。
k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)
如果用户输入小于零的数字,则控件会跳出 for 循环,进入循环后的第一条语句。
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10
如何在 for 循环中使用 continue 语句
continue
语句可用于根据特定条件跳过某些迭代。
让我们使用上一节中的相同示例。
- 读入用户输入并计算非负数的总和。
- 如果用户输入负数,则跳过该迭代继续下一个迭代,并读入下一个数字。
k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)
这是一个示例输出。
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13
第四个数字是-1,它是负数。 然而,这一次 for 循环一直持续到我们达到指定数量的输入,并忽略负输入。 本质上,它返回k个输入数字中所有非负数的总和。
你会在 Python 中遇到无限循环吗?

在我们迄今为止讨论的所有示例和用例中,我们从未遇到过无限 for 循环的问题。 但是我们可以在 Python 中有一个无限的 for 循环吗?
考虑以下函数double()
。
def double(x = 1): return x*2
- 当您调用函数
double()
而不指定x
的值时,将使用默认值 1。 - 在函数调用中为
x
指定值时,将使用该值。
double() # Returns: 2 double(20) # Returns: 40
在 Python 中,iter() 函数返回一个迭代器对象。 您可以使用next(iter-obj)
遍历序列并访问后续项目。
– 考虑一个可调用对象和一个值,哨兵。
–
iter(callable-object, sentinel)
可用于执行迭代,直到callable-object
的返回值等于sentinel
。
你明白为什么在这种情况下我们可以有一个无限循环吗?

好吧,你有一个callable-object
和一个sentinel
值。 如果可调用的返回值永远不等于哨兵,那么循环将永远继续!
让我们使用上面的函数double
作为可调用对象,并将哨兵值设置为 0。
注意:提及函数double
的名称,而不是函数调用double()
。
由于函数double
的返回值始终为 2 且从不等于 0,因此我们有一个无限循环!
️ 尝试运行以下代码单元。 它是无限循环的,你必须强制停止程序。
for _ in iter(double,0): print("Running...")

Python For 循环:练习题
#1 。 使用 for 循环打印出 0 到 20 范围内的所有偶数。
提示:使用具有正确step
值的range()
函数。
#2 。 打印出从 20 到 0 的所有偶数。
提示:对range()
函数中的step
参数使用负值。
#3 。 创建一个三维 NumPy 数组。
提示:根据需要使用 for 循环和嵌套 for 循环来访问数组中的行和单个条目。
包起来
这是您在本教程中学到的内容的摘要。
- 使用 Python for循环以及range()和enumerate()函数的语法
- 使用 for 循环遍历列表、数组和字符串,并读取命令行参数
- 使用循环控制语句: break跳出循环, continue语句跳过某些迭代——基于条件——在 for 循环内
- 了解 Python 中无限 for 循环的可能性
接下来,学习如何在 Python 中使用 split() 方法。