小白编程
亮色模式 暗色模式 跟随系统
首页 Python

如何在 Python 中使用 if 语句处理列表

发布日期:

通过结合 if 语句与列表,我们可以实现多种功能:比如对列表中的特定元素进行特殊处理、高效地管理不断变化的情况(例如餐馆是否有某种食材),并确保代码在各种情况下都能按预期运行。

检查特殊元素

条件测试中,我们演示了如何处理特殊的值 'bmw'——需要采用不同的格式打印。现在你已经掌握了条件测试和 if 语句的基础知识,接下来我们将深入探讨如何检查列表中的特殊元素,并对其进行适当的处理。

继续使用比萨店的例子。这家比萨店在制作比萨时,每添加一种配料都会打印一条消息。为了更高效地编写这样的代码,可以创建一个包含顾客所点配料的列表,并使用循环来指出哪些配料被添加到了比萨中:

1
2
3
4
5
6
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']

for requested_topping in requested_toppings:
    print(f"Adding {requested_topping}.")

print("\nFinished making your pizza!")

上述代码简单明了,因为它只是一个简单的 for 循环:

1
2
3
4
5
Adding mushrooms.
Adding green peppers.
Adding extra cheese.

Finished making your pizza!

但如果比萨店暂时没有青椒(green peppers)了,该怎么办?为了解决这个问题,可以在 for 循环中嵌入一个 if 语句来进行判断:

1
2
3
4
5
6
7
8
9
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']

for requested_topping in requested_toppings:
    if requested_topping == 'green peppers':
        print("Sorry, we are out of green peppers right now.")
    else:
        print(f"Adding {requested_topping}.")

print("\nFinished making your pizza!")

在这段代码中,每次向比萨添加配料之前都会进行检查。if 语句用于检测顾客是否点了青椒。如果是,则显示一条提示信息,说明青椒暂时缺货。而对于其他配料,else 代码块会执行,确保它们能被正常添加到比萨中。

输出结果如下:

1
2
3
4
5
Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.

Finished making your pizza!

确定列表非空

到目前为止,我们假设要处理的每个列表至少包含一个元素。但在实际应用中,用户提供的列表可能是空的。因此,在运行 for 循环前确定列表是否为空非常重要。

下面是在制作比萨前检查顾客点的配料列表是否为空的例子。如果列表为空,就向顾客确认是否要点原味比萨;如果列表非空,则像前面的示例那样制作比萨:

1
2
3
4
5
6
7
8
requested_toppings = []

if requested_toppings:
    for requested_topping in requested_toppings:
        print(f"Adding {requested_topping}.")
    print("\nFinished making your pizza!")
else:
    print("Are you sure you want a plain pizza?")

首先创建一个空列表,其中不包含任何配料。然后进行简单的检查,而不是直接执行 for 循环。在 if 语句中将列表名用作条件表达式时,Python 将在列表至少包含一个元素时返回 True,在列表为空时返回 False1。如果 requested_toppings 非空,就运行与前一个示例相同的 for 循环;否则打印一条消息,询问顾客是否确实要点不加任何配料的原味比萨。

这里的列表为空,因此输出如下:

1
Are you sure you want a plain pizza?

如果这个列表非空,输出将显示添加在比萨中的各种配料。

使用多个列表

顾客的要求五花八门,在比萨配料方面尤其如此。如果顾客想要在比萨中添加炸薯条(French fries),该怎么办呢?可以使用列表和 if 语句来确定能否满足顾客的要求。

我们来看看如何在制作比萨前拒绝怪异的配料要求。下面的示例定义了两个列表,其中第一个包含比萨店供应的配料,第二个则包含顾客点的配料。这次对于 requested_toppings 中的每个元素,都先检查它是否是比萨店供应的配料,再决定是否在比萨中添加它:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
available_toppings = ['mushrooms', 'olives', 'green peppers',
                      'pepperoni', 'pineapple', 'extra cheese']

requested_toppings = ['mushrooms', 'french fries', 'extra cheese']

for requested_topping in requested_toppings:
    if requested_topping in available_toppings:
        print(f"Adding {requested_topping}.")
    else:
        print(f"Sorry, we don't have {requested_topping}.")

print("\nFinished making your pizza!")

首先定义一个列表,其中包含比萨店供应的配料。请注意,如果比萨店供应的配料是固定的,也可以使用一个元组来存储它们。然后创建另一个列表,其中包含顾客点的配料。请注意那个不同寻常的配料——‘french fries’。接下来,遍历顾客点的配料列表。在这个循环中,对于顾客点的每种配料,都检查它是否在供应的配料列表中。如果答案是肯定的,就将其加入比萨,否则运行 else 代码块:打印一条消息,告诉顾客不供应这种配料。

这些代码的输出整洁且包含足够的信息:

1
2
3
4
5
Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.

Finished making your pizza!

通过寥寥几行代码,我们高效地处理了一种真实的情形!


  1. 对于数值 0、空值 None、单引号空字符串 ''、双引号空字符串 ""、空列表 []、空元组 ()、空字典 {},Python 都会返回 False。 ↩︎

相关文章