python三元表达式写法没有Java的写法简洁,但是他有扩展功能,即一行能写出三五个分支都可以。不愧是人生苦短我用python
。
基础三元表达式
# 语法:value1 if <condition> else value2
i = 10
print(1 if i % 2 == 0 else 0)
# 1
i = 11
print(1 if i % 2 == 0 else 0)
# 0
多分支表达式
# 语法:value1 if <condition1> else value2 if <condition2> else value3 ...
i = 10
print(2 if i % 4 == 0 else 1 if i % 2 == 0 else 0)
# 1
i = 12
print(2 if i % 4 == 0 else 1 if i % 2 == 0 else 0)
# 2
i = 9
print(2 if i % 4 == 0 else 1 if i % 2 == 0 else 0)
# 0
神奇的写法
还有两种神奇的写法从Python中三元表达式的几种写法介绍中看到的,感觉很有意思,就是略难维护,仅做猎奇展示。
字典写法
# 语法: {True: TrueValue, False: FalseValue}[condition]
print({True: "TrueValue", False: "FalseValue"}[1 > 2])
# FalseValue
这种写法其实就是,在字典中定义了两个key,True
,False
后面条件命中是取出key
对应的value
即可
元组写法
# 语法:(FalseValue, TrueValue)[condition]
print(("FalseValue", "TrueValue")[2 > 1])
# TrueValue
这个写法就比较有意思了,这块涉及一个类似C语言的boolean到底有没有数值的问题。为了解释这个我们现在做个试验,看一下True
和False
在python中与0
,1
,2
的关系。
print(True == 0)
# False
print(True == 1)
# True
print(True == 2)
# False
print(False == 0)
# True
print(False == 1)
# False
print(False == 2)
# False
由上述代码可以看出,在python中True
的数值就是1
,False
的数值就是0
,这也就说明了为什么元组写法的表达式要把错误值写在第一位,而正确值写在后面了。