Python 中的 For 循环:你需要知道的一切

已发表: 2022-08-18

本教程将通过代码示例教您如何在 Python 中使用 for 循环

在编程中,循环可帮助您重复一组特定的语句。 在以下情况下,您将使用for循环进行明确的迭代:

  • 你知道你将处理一个元素数量有限的序列
  • 您会事先看到重复次数

本教程将教你如何在 Python 中使用 for 循环。 您将从学习语法和使用 for 循环的简单迭代开始。 然后,您将了解处理命令行参数、使用循环控制语句等。

让我们开始吧…

Python for 循环的语法

Python for 循环的语法

在 Python 中使用 for 循环的通用语法如下:

 for item in iterable: # do something on item statement_1 statement_2 . . . statement_n

在上面的语法中:

  • item是循环变量。
  • iterable表示任何 Python 可迭代对象,例如列表、元组和字符串。
  • statement_1statement_n表示循环体中的语句。

注意:请务必在可迭代的名称后添加一个冒号 ( : ,并将循环体中的所有语句缩进四个空格。

Python中常见的循环构造

for 循环结构

使用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:当分别循环遍历fruitsstudents列表时。

使用带有 range() 函数的 for 循环

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

在 Python 中, range(start, stop, step)返回一个范围对象,您可以循环获取索引: startstart + 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换循环

如何在 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 循环遍历数组

您可以使用循环遍历数组并嵌套 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
python-for-loop-命令行参数

综上所述, 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 语句

for 循环内部的 break 语句

与其他编程语言一样,Python 也支持使用循环控制语句breakcontinue 。 这些语句可以根据某些条件帮助改变循环中的控制流。 让我们看看如何在 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

你明白为什么在这种情况下我们可以有一个无限循环吗?

python-for-无限循环

好吧,你有一个callable-object和一个sentinel值。 如果可调用的返回值永远不等于哨兵,那么循环将永远继续!

让我们使用上面的函数double作为可调用对象,并将哨兵值设置为 0。

注意:提及函数double的名称,而不是函数调用double()

由于函数double的返回值始终为 2 且从不等于 0,因此我们有一个无限循环!

️ 尝试运行以下代码单元。 它是无限循环的,你必须强制停止程序。

 for _ in iter(double,0): print("Running...")
python-for-loop-infinite

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() 方法。