摘要:在本教程中,你将学习 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
语句或可迭代对象为空时执行一个代码块。