在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_1statement_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

再来举几个例子,当循环遍历fruitsstudents列表时,您可以使用for fruit in fruits:for student in students:

使用range()函数的for循环

当您想通过索引访问列表项时,您可以使用range()函数。

在Python中,range(start, stop, step)返回一个范围对象,您可以通过循环从中获取索引:startstart + 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的内置模块,例如sysargparse来解析和读取命令行参数。

在本节中,我们将介绍如何使用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 也支持使用循环控制语句 breakcontinue。这些语句可以根据一些条件改变循环的控制流程。让我们看看如何在 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

  • 类似文章