Python下的三元运算符

Python下的三元运算符

【一】引言

  • 三元表达式(三目运算符)能够简洁我们的代码
    • 三元表达式其实是将if...else...判断语句的简化表达,代替很多if else
  • 和if-else一样,只有一个表达式会被执行。
    • 因此,三元表达式中的if和else可以包含大量的计算,但只有True的分支会被执行
  • 在Java、C、JavaScript等语言中,他们的格式为:
返回布尔值的判断条件?为真时的结果:为假时的结果
  • 但是,Python的三元表达式的写法有别于其他语言,Python的语法为
为真时的结果 if 返回布尔值的判断条件 else 为假时的结果
  • 其逻辑为:
    • 如果条件表达式成立或者满足则执行表达式1
    • 否则执行第二个。
  • 常用在设置默认值
    • 例如某个值不一定存在,则判断这个值是否存在
    • 不存在则给[默认值]。

【二】案例解析

【1】简单的用法

# 演示条件运算符的程序
a, b = 10, 20
# 如果 a < b 则复制 a 的最小值,否则复制 b
min = a if a < b else b
print(min)
# 10

【2】在元祖等中的用法

# 演示三元运算符的 Python 程序
a, b = 10, 20

# 使用元组选择一个项目 (if_test_false,if_test_true)[test] 如果 [a<b] 为真则返回 1,因此索引为 1 的元素将打印,否则如果 [a<b] 为假则返回 0,因此元素为 0 索引将打印
print( (b, a) [a < b] )
# 10

# 如果 [a < b] 为真,则使用 Dictionary 选择项目,然后打印 True 键的值,否则,如果 [a<b] 为假,则打印 False 键的值
print({True: a, False: b} [a < b])
# 10

# lambda 比上述两种方法更有效,因为在 lambda 中,我们确保只评估一个表达式,这与 tuple 和 Dictionary 不同
print((lambda: b, lambda: a)[a < b]())
# 10

【三】三元运算符中的嵌套

# 演示嵌套三元运算符的 Python 程序
a, b = 10, 20

print ("Both a and b are equal" if a == b else "a is greater than b"
		if a > b else "b is greater than a")
# 演示嵌套三元运算符的 Python 程序
a, b = 10, 20

if a != b:
	if a > b:
		print("a is greater than b")
	else:
		print("b is greater than a")
else:
	print("Both a and b are equal")
    
    
    # b is greater than a
posted @ 2023-06-01 16:03  Chimengmeng  阅读(67)  评论(0编辑  收藏  举报