MEMOO
MEMOO
Published on 2025-04-19 / 1 Visits
0
0

Python中的for...else语句

摘要:在本教程中,你将学习 Python 的 for...else 语句以及如何有效地使用它。

Python for…else 语句介绍

在 Python 中for 语句可以有一个可选的 else 子句,如果你来自其他语言(如 Java 或 C#),可能对此不太熟悉。

以下是带有 else 子句的 for 语句的语法:

for item in iterables:

    # Process item

    if condition:

        break  # Terminate the loop prematurely

else:

    # Executed if the loop completes without a break

在此语法中:

  • Python 仅在 for 循环遍历完可迭代对象中的所有项且未遇到 break 语句时,才会执行 else 块。

  • 如果 Python 遇到 break 语句,它将完全跳过 else 块。

  • 如果可迭代对象没有任何项,Python 会立即执行 else 块。

break 语句不同continue 语句不会提前结束循环。因此,如果循环正常完成else 块将会执行。

以下流程图说明了 for...else 语句的逻辑:

如果你知道如何有效地运用 else 子句,那么它在某些情况下会非常有用。

Python for…else 示例

假设你有一个人员列表,其中每个人都是一个包含姓名和年龄的字典,如下所示:

people = [{'name': 'John', 'age': 25},

        {'name': 'Jane', 'age': 22},

        {'name': 'Peter', 'age': 30},

        {'name': 'Jenifer', 'age': 28}]

并且你想通过姓名来搜索一个人。

如果列表中包含这个人,你想显示这个人的信息。否则,你想显示一条消息,说明未找到该姓名。

为此,你可能会编写一个像这样的程序:

people = [{'name': 'John', 'age': 25},

        {'name': 'Jane', 'age': 22},

        {'name': 'Peter', 'age': 30},

        {'name': 'Jenifer', 'age': 28}]

name = 'Maria'

found = False

for person in people:

    if person['name'] == name:

        found = True

        print(person)

        break

if not found:

    print(f'{name} not found!')

输出:

Maria not found!

工作原理:

  • 首先,初始化一个变量,存储要搜索的人的姓名(Maria)。

  • 然后,设置一个标志found)为 False。如果输入的姓名与列表中的某个人匹配,则将其值设置为 True,显示该人的信息,并使用 break 语句退出循环。

  • 最后,检查 found 标志并显示一条消息。

然而,如果你使用 for...else 语句,程序将会简洁得多。

以下展示了使用 for...else 语句的新版本程序:

people = [{'name': 'John', 'age': 25},

        {'name': 'Jane', 'age': 22},

        {'name': 'Peter', 'age': 30},

        {'name': 'Jenifer', 'age': 28}]

name = 'Maria'

for person in people:

    if person['name'] == name:

        print(person)

        break

else:

    print(f'{name} not found!')

通过使用 for...else 语句,程序无需在循环后使用标志和一个 if 语句。

在这个新程序中,如果输入的姓名与列表中的某个人匹配,程序将显示该人的信息,并使用 break 语句退出循环。

当循环遇到 break 语句时else 子句将不会执行。

遍历空列表

以下示例使用 for...else 语句遍历一个列表,并显示该列表为空:

people  = []

for person in people:

    print(person)

else:

    print("The list is empty.")

输出:

The list is empty.

总结

  • 使用 Python 的 for...else 语句,可以在循环未遇到 break 语句或可迭代对象为空时执行一个代码块。


Comment