许多语言的三元运算符都是这样的:
x = f() ? f() : g()
如果f()
是真实的,则为x
分配f()
的值,否则为其分配值g()
。但是,某些语言的功能更为简洁elvis operator:
x = f() ?: g()
在python中,三元运算符表示如下:
x = f() if f() else g()
但是python是否有更简洁的 elvis 运算符?
可能是这样的:
x = f() else g() # Not actually valid python
答案 0 :(得分:18)
Python确实有elvis运算符。它是条件or
运算符:
x = f() or g()
评估 f()
。如果真实,则为x指定值f()
,否则为x指定值g()
。
参考:https://en.wikipedia.org/wiki/Elvis_operator#Analogous_use_of_the_OR_operator
答案 1 :(得分:4)
注意 Python 没有没有空合并操作符定义为:
a if a is not None else b
or
中的 a or b
运算符在 a
或 False
或其他类似情况下检查 a==0
的真实性,即 len(a)==0
。见What is Truthy and Falsy
有建议添加这样的操作符 PEP 505
答案 2 :(得分:-1)
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4]
>>> a + (b,c)[b>c]
[1, 2, 3, 4]
>>> a + (b,c)[b<c]
[1, 2, 3, 4, 5, 6]
>>>
Python Elvis操作是
(testIsFalse, testIsTrue)[test]
与Java等效的是
test ? testIsTrue:testIsFalse