多くの言語の三項演算子は次のように機能します。
_x = f() ? f() : g()
_
f()
が真である場合はx
にf()
の値が割り当てられ、そうでない場合はg()
の値が割り当てられます。ただし、一部の言語には、より簡潔な elvis演算子 があり、機能的に同等です。
_x = f() ?: g()
_
Pythonでは、ternary演算子は次のように表されます。
_x = f() if f() else g()
_
しかし、pythonはより簡潔なelvis演算子を持っていますか?
多分次のようなものです:
_x = f() else g() # Not actually valid python
_
Pythonにはエルビス演算子があります。これは条件付きのor
演算子です。
_x = f() or g()
_
f()
が評価されます。正しければ、xにはf()
の値が割り当てられ、そうでない場合、xにはg()
の値が割り当てられます。
参照: https://en.wikipedia.org/wiki/Elvis_operator#Analogous_use_of_the_OR_operator
>>> 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]
>>>
Pythonelvisの操作は
(testIsFalse, testIsTrue)[test]
Java同等のものは
test ? testIsTrue:testIsFalse