web-dev-qa-db-ja.com

Pythonにはエルビス演算子がありますか?

多くの言語の三項演算子は次のように機能します。

_x = f() ? f() : g()
_

f()が真である場合はxf()の値が割り当てられ、そうでない場合はg()の値が割り当てられます。ただし、一部の言語には、より簡潔な elvis演算子 があり、機能的に同等です。

_x = f() ?: g()
_

Pythonでは、ternary演算子は次のように表されます。

_x = f() if f() else g()
_

しかし、pythonはより簡潔なelvis演算子を持っていますか?

多分次のようなものです:

_x = f() else g() # Not actually valid python
_
11
Cory Klein

はい

Pythonにはエルビス演算子があります。これは条件付きのor演算子です。

_x = f() or g()
_

f()が評価されます。正しければ、xにはf()の値が割り当てられ、そうでない場合、xにはg()の値が割り当てられます。

参照: https://en.wikipedia.org/wiki/Elvis_operator#Analogous_use_of_the_OR_operator

22
Robᵩ
>>> 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
0
Blessed Geek