Python 中的三元运算符详解
概述
这个Python中的三元运算符是在一行中编写简单if/else语句的一种简洁方式。它通过计算布尔条件返回true或false值。它比简单的if/else语句更短,可读性更强。我们还可以用元组、列表、字典或lambda函数实现三元运算符。三元运算符也可以通过链接来嵌套。
什么是Python中的三元运算符?
这个三元运算符(也称为条件表达式)是用Python编写条件语句的一种简洁方法。它根据布尔条件的结果返回一个值。
有时,编写传统的if/else语句可能会变得忙碌。例如,使用if/else简单地打印内容:
if number % 2 == 0:
print("Even")
else:
print("Odd")
这样一个简单的任务需要4行,我们可以在一行中使用三元运算符获得相同的结果。
在下面的部分中,我们将看到如何在Python中使用三元运算符。
外卖
三元运算符是一种在单行中编写简单if/else语句的方法。
三元运算符的语法
语法:
true_value if condition else false_value
下图显示三元运算符返回值1当条件被评估为true时,否则值2返回:
让我们使用三元运算符来简化之前编写的if/else语句。
print("Even" if number % 2 == 0 else "Odd")
完成!仅在一行中
这个条件运算符被命名为“三元”,因为它由三部分。让我们详细了解一下其中的每一个。
外卖
Python三元运算符的三个操作数
三元运算符包括三个操作数:
- 条件:布尔表达式的计算结果为真的或False(错误) .
- 真值:条件求值为时要返回的值(任何Python对象)真的 .
- False值:条件求值为时要返回的值(任何Python对象)False(错误) .
外卖
Python中的三元运算符示例
我们已经看到了如何使用三元运算符打印不同的值。让我们再看几个例子。
示例1:使用三元运算符分配变量
三元运算符允许我们在条件为true时为变量分配一个值,在条件为false时为另一个值。
假设我们想分配一个变量行动根据变量的值信号 :
如果信号值为“绿光”,则将动作设置为“移动”,否则将动作设置为“停止”。
我们可以使用三元运算符在一行中完成此操作:
signal = "green light"
action = "move" if signal == "green light" else "stop"
print(action)
输出:
move
说明:
首先,条件signal == "green light"已评估。由于信号值为“绿灯”,该条件评估为真的返回三元运算符“move”的第一个值,然后赋给变量行动 .
示例2:使用三元运算符返回值
让我们编写一个函数,通过检查客户是否为会员来返回不同的费用金额:
def get_fee(is_member):
return 10 if is_member else 20
print(get_fee(False))
输出:
20
说明:
作为条件是成员(_M)此时为False,则返回第二个值。
外卖
在Python中实现三元运算符的各种方法
尽管我们有如上所述定义三元运算符的简单方法,但我们也可以使用以下方法实现三元运算符:
1.用元组实现三元运算符
我们可以用元组实现三元运算符:
元组是用括号定义的不可变数据结构,用于存储有序的值序列。例如: (1, 2, 3)是具有三个值的元组。由于元组是不可变的,因此在定义元组之后,不能更改元组中的值。
语法:
(false_value, true_value)[condition]
例子:
signal = "green light"
action = ("stop", "move")[signal == "green light"]
print(action)
输出:
move
说明:
我们首先创建了一个元组-(“停止”、“移动”)包含true和false条件的值。然后我们使用索引-[signal == "green light"]以选择其中一个值
这样做的原因是条件将返回False(错误)或真的当进行索引时,其将被分别转换为0或1。
因此,第一个值(第0个索引)对应于False,第二个值(第一个索引)相应于True。
与我们的例子一样,条件的计算结果为True,因此返回“move”。
2.用列表实现三元运算符
我们可以用列表实现三元运算符:
列表是用方括号定义的可变数据结构,用于存储有序的值序列。
例如: [1, 2, 3]是一个包含三个值的列表。
列表类似于元组,但它们是可变的,这意味着我们可以更改其中的值。
语法:
[false_value, true_value][conditon]
例子:
signal = "green light"
action = ["stop", "move"][signal == "green light"]
print(action)
输出:
move
说明:
这个示例与元组1类似。我们只是使用了一个列表而不是元组,工作方式保持不变。
3.用字典实现三元运算符
我们可以使用字典实现三元运算符:
字典是键:值对的集合,其中每个值都使用唯一的键进行访问。它是用花括号定义的。例如:{“name”:“harry”,“age”:11}是一本有两个键的字典。使用键而不是列表中的索引来访问值。
语法:
{True: true_value, False: false_value}[condition]
例子:
signal = "green light"
action = {True: "move", False: "stop"}[signal == "green light"]
print(action)
输出:
move
说明:
在这种情况下,还首先创建一个字典,然后根据字典的键对条件进行求值和匹配,这些键是真的或False(错误),并返回相应的值
与元组或列表不同,true或false值的顺序与字典无关。
4.用Lambda函数实现三元运算符
我们可以使用lambda函数实现三元运算符:
lambda函数是一个匿名函数,它使用λ关键字而不是通常的关键字 定义关键字。例如:double = lambda x: x * 2是采用一个参数的lambda函数x .
语法:
(lambda x: false_val, lambda x: true_val)[condition](args)
例子:
signal = "green light"
action = (lambda msg: f"stop {msg}", lambda msg: f"move {msg}")[signal == "green light"]("now")
print(action)
输出:
move now
说明:
我们还可以在元组内提供lambda函数,而不是像以前那样提供硬编码的值。将根据条件调用lambda函数之一。
外卖
三元运算符与if/else
如果我们使用传统的If/else语句完成了相同的示例,则需要4行:
如果信号值为“绿光”,则将动作设置为“移动”,否则将动作设置为“停止”。
signal = "green light"
if signal == "green light":
action = "move"
else:
action = "stop"
print(action)
输出:
move
现在您可以看到,对于简单的条件语句,与传统的if/else语句相比,三元运算符是一个更短、更可读的选择。
外卖
Python中的嵌套三元运算符
我们还可以嵌套三元运算符,下面是一个示例:
代码:
signal = "red light"
action = "move" if signal == "green light" else "stop" if signal == "red light" else "Invalid Signal"
print(action)
输出:
stop
这相当于以下if/else语句:
signal = "red light"
if signal == "green light":
action = "move"
elif signal == "red light":
action = "stop"
else:
action = "Invalid Signal"
print(action)
记住,强大的力量会带来巨大的责任,仅仅因为你可以嵌套三元运算符并不意味着你应该一直这样做。嵌套三元操作符可能会损害可读性,并在开发过程中引发问题。
外卖:
还有,看看这个文章了解Python中的运算符。
结论
作者:新华