在Python中的for循环:你需要了解的一切
本教程将通过代码示例教您如何在Python中使用for循环。
在编程中,循环帮助您重复执行一组特定的语句。当您:
- 知道您将使用具有有限元素数量的序列
- 预先知道重复次数
本教程将教您如何在Python中使用for循环。您将首先学习使用for循环的语法和简单迭代。然后,您将学习如何处理命令行参数、使用循环控制语句等。
让我们开始吧…
Python for循环的语法
在Python中使用for循环的通用语法如下:
for item in iterable:
# 对item执行某些操作
statement_1
statement_2
.
.
.
statement_n
在上述语法中:
- item是循环变量。
- iterable表示任何Python可迭代对象,如列表、元组和字符串。
- statement_1到statement_n表示循环体中的语句。
注意:在可迭代对象的名称后面添加冒号(:
),并使用四个空格缩进循环体中的所有语句。
Python中常见的for循环结构
在使用for循环时:
- 您可以直接使用前面讨论的语法来访问项目。
- 您可以与Python内置函数(如
range()
和enumerate()
)结合使用for循环。
我们将在本节中介绍它们。
使用for循环访问元素
为了提高可读性,您应该选择一个能说明列表内容的循环变量。例如,在下面的示例中,nums
是一个数字列表,我们使用num
作为循环变量。请注意,for num in nums:
直观且易于阅读。
nums = [4,5,9,1,3]
for num in nums:
print(num)
# 输出
4
5
9
1
3
再来举几个例子,当循环遍历fruits
和students
列表时,您可以使用for fruit in fruits:
和for student in students:
。
使用range()函数的for循环
当您想通过索引访问列表项时,您可以使用range()
函数。
在Python中,
range(start, stop, step)
返回一个范围对象,您可以通过循环从中获取索引:start
,start + step
等,但不包括stop
。
for i in range(len(nums)):
print(nums[i])
# 输出
4
5
9
1
3
您还可以使用range()
函数生成要循环遍历的数字序列。在下面的示例中,我们将可选的step
参数设置为2。因此,我们从10开始,但不包括20,以2为步长得到的数字。
for i in range(10,20,2):
print(i)
# 输出
10
12
14
16
18
使用enumerate()函数的for循环
当您想循环遍历可迭代对象并同时访问其项和索引时,可以使用enumerate()
函数。
下面是一个示例。
for idx, num in enumerate(nums):
print(f"{idx}:{num}")
# 输出
0:4
1:5
2:9
3:1
4:3
如何使用for循环在Python中读取列表项
要使用for循环遍历Python列表,可以使用前面部分中的通用语法。
在下面的示例中,nums
是可迭代的,num是循环变量。
nums = [4,5,9,1,3]
for num in nums:
print(f"{num}乘以3是{num*3}") # 对每个num执行的操作
# 输出
4乘以3是12
5乘以3是15
9乘以3是27
1乘以3是3
3乘以3是9
如何使用for循环在Python中循环遍历字符串
Python字符串是可迭代的,可以进行循环遍历、索引、切片等操作。
注意:Python没有内置的字符数据类型。因此,您可以将字符视为长度为1的字符串。
my_string = "Code"
for char in my_string:
print(char)
# 输出
C
o
d
e
如何使用for循环在Python中循环遍历数组
您可以使用循环和嵌套for循环遍历数组。
在下面的代码片段中,array1是一个包含较小列表作为其元素的嵌套列表。因此,循环遍历array1会给出每行,如下所示。
array1 = [[2,3],[7,8]]
for row in array1:
print(row)
# 输出
[2, 3]
[7, 8]
要访问每行中的单个元素,可以使用另一个for
循环。
array1 = [[2,3],[7,8]]
for row in array1:
for elt in row:
print(elt)
在上面的代码单元格中:
- 外部for循环帮助您索引到行。
- 内部for循环使您能够访问每行中的元素。
以下是相应的输出。
输出
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}是{sys.argv[i]}")
▶️ 接下来,重新运行main.py。
$ python main.py Hello Python3
arg0是main.py
arg1是Hello
arg2是Python3
假设您希望解析和处理模块名以外的参数。您可以将起始值设置为1,如下面的代码单元格中所示。
# main.py
import sys
for i in range(1,len(sys.argv)):
print(f"arg{i}是{sys.argv[i]}")
$ python main.py Hello Python3
arg1是Hello
arg2是Python3
将所有内容放在一起,main.py文件包含以下代码。
# main.py
import sys
print("n打印所有命令行参数...")
for arg in sys.argv:
print(arg)
print("n打印所有带索引的命令行参数...")
for i in range(len(sys.argv)):
print(f"arg{i} 是 {sys.argv[i]}")
print("n打印除了命令行参数 arg0: module_name 之外的其他参数...")
for i in range(1,len(sys.argv)):
print(f"arg{i} 是 {sys.argv[i]}")
运行模块时的输出如下。
$ python main.py Hello Python3
打印所有命令行参数...
main.py
Hello
Python3
打印所有带索引的命令行参数...
arg0 是 main.py
arg1 是 Hello
arg2 是 Python3
打印除了命令行参数 arg0: module_name 之外的其他参数...
arg1 是 Hello
arg2 是 Python3
如何在 for 循环中使用 break 语句
与其他编程语言一样,Python 也支持使用循环控制语句 break
和 continue
。这些语句可以根据一些条件改变循环的控制流程。让我们看看如何在 for 循环中使用它们。
break
语句可用于在特定条件为 True
时跳出循环。
我们想编写一个程序来执行以下任务:
- 固定
k
,输入的数字个数。 - 使用一个
for
循环逐个读取用户输入的数字,将非负数(大于或等于零)求和。 - 只要用户输入非负数,该过程就应该继续。
- 当用户输入负数时,退出循环并打印求和结果。
以下是执行上述任务的代码。
k= 5
sum = 0
for i in range(k):
num = int(input("n请输入一个数字:"))
if num<0:
break # 当 num < 0 时退出循环
sum += num
print(sum)
如果用户输入的数字小于零,控制流程会跳出 for 循环,并执行循环后的第一条语句。
请输入一个数字:2
请输入一个数字:3
请输入一个数字:5
请输入一个数字:-1
10
如何在 for 循环中使用 continue 语句
continue
语句可用于根据特定条件跳过某些迭代。
让我们使用前面的示例。
- 读取用户输入并计算非负数的和。
- 如果用户输入负数,跳过该迭代,继续到下一个迭代,并读取下一个数字。
k = 5
sum = 0
for i in range(k):
num = int(input("n请输入一个数字:"))
if num<0:
continue
sum += num
print(sum)
下面是一个示例输出。
请输入一个数字:2
请输入一个数字:3
请输入一个数字:5
请输入一个数字:-1
请输入一个数字:3
13
第四个数字是 -1,它是负数。但是,这次 for 循环会继续进行,直到达到指定的输入数字,忽略负数输入。实际上,它返回 k 个输入数字中所有非负数的和。
在 Python 中可以遇到无限 for 循环吗?
在我们到目前为止讨论的所有示例和用例中,我们从未遇到无限 for 循环的问题。但是,在 Python 中我们可以有无限 for 循环吗?
考虑以下函数 double()
。
def double(x = 1):
return x*2
- 当您调用函数
double()
而未指定x
的值时,将使用默认值1。 - 当您在函数调用中指定
x
的值时,将使用该值。
double()
# 返回:2
double(20)
# 返回:40
在Python中,iter()函数返回一个迭代器对象。您可以使用next(iter-obj)
来遍历序列并访问后续项。
– 考虑一个可调用对象和一个值,sentinel。
– 可以使用
iter(callable-object, sentinel)
来执行迭代,直到callable-object
的返回值等于sentinel
。
您看到了吗?为什么在这种情况下我们可以有一个无限的for循环?
嗯,你有一个callable-object
和一个sentinel
值。如果可调用对象的返回值从不等于sentinel,则循环将永远继续下去!
让我们将上述函数double
用作可调用对象,并将sentinel值设置为0。
注意:提到函数double
的名称,而不是函数调用double()
。
由于函数double
的返回值始终为2且永远不等于0,我们有一个无限循环!
▶️ 尝试运行以下代码单元格。这是一个无限的for循环,您将不得不强制停止程序。
for _ in iter(double,0):
print("Running...")
Python For循环:练习题
#1。使用for循环打印出0到20范围内的所有偶数。
提示:使用正确的step
值使用range()
函数。
#2。从20打印到0的所有偶数。
提示:在range()
函数中为step
参数使用负值。
#3。创建一个三维NumPy array。
提示:根据需要使用for循环和嵌套的for循环来访问数组中的行和单个条目。
总结
以下是您在本教程中学到的内容的摘要。
- 使用Python for循环以及range()和enumerate()函数的语法
- 使用for循环遍历列表、数组和字符串,并读取命令行参数
- 使用循环控制语句:break用于跳出循环和continue语句用于在for循环内根据条件跳过某些迭代
- 了解Python中无限for循环的可能性
接下来,了解如何使用split() method in Python。