赞
踩
这个Python中的三元运算符是在一行中编写简单if/else语句的一种简洁方式。它通过计算布尔条件返回true或false值。它比简单的if/else语句更短,可读性更强。我们还可以用元组、列表、字典或lambda函数实现三元运算符。三元运算符也可以通过链接来嵌套。
这个三元运算符(也称为条件表达式)是用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")
完成!仅在一行中
这个条件运算符被命名为“三元”,因为它由三部分。让我们详细了解一下其中的每一个。
外卖
三元运算符包括三个操作数:
外卖
我们已经看到了如何使用三元运算符打印不同的值。让我们再看几个例子。
三元运算符允许我们在条件为true时为变量分配一个值,在条件为false时为另一个值。
假设我们想分配一个变量行动根据变量的值信号 :
如果信号值为“绿光”,则将动作设置为“移动”,否则将动作设置为“停止”。
我们可以使用三元运算符在一行中完成此操作:
- signal = "green light"
- action = "move" if signal == "green light" else "stop"
- print(action)
输出:
move
说明:
首先,条件signal == "green light"已评估。由于信号值为“绿灯”,该条件评估为真的返回三元运算符“move”的第一个值,然后赋给变量行动 .
让我们编写一个函数,通过检查客户是否为会员来返回不同的费用金额:
- def get_fee(is_member):
- return 10 if is_member else 20
-
- print(get_fee(False))
输出:
20
说明:
作为条件是成员(_M)此时为False,则返回第二个值。
外卖
尽管我们有如上所述定义三元运算符的简单方法,但我们也可以使用以下方法实现三元运算符:
我们可以用元组实现三元运算符:
元组是用括号定义的不可变数据结构,用于存储有序的值序列。例如: (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”。
我们可以用列表实现三元运算符:
- 列表是用方括号定义的可变数据结构,用于存储有序的值序列。
- 例如: [1, 2, 3]是一个包含三个值的列表。
- 列表类似于元组,但它们是可变的,这意味着我们可以更改其中的值。
语法:
[false_value, true_value][conditon]
例子:
- signal = "green light"
- action = ["stop", "move"][signal == "green light"]
- print(action)
输出:
move
说明:
这个示例与元组1类似。我们只是使用了一个列表而不是元组,工作方式保持不变。
我们可以使用字典实现三元运算符:
字典是键:值对的集合,其中每个值都使用唯一的键进行访问。它是用花括号定义的。例如:{“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值的顺序与字典无关。
我们可以使用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语句完成了相同的示例,则需要4行:
如果信号值为“绿光”,则将动作设置为“移动”,否则将动作设置为“停止”。
- signal = "green light"
-
- if signal == "green light":
- action = "move"
- else:
- action = "stop"
-
- print(action)
输出:
move
现在您可以看到,对于简单的条件语句,与传统的if/else语句相比,三元运算符是一个更短、更可读的选择。
外卖
我们还可以嵌套三元运算符,下面是一个示例:
代码:
- 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中的运算符。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。