重複の可能性:
Pythonの3項条件演算子
私はかなり前からJavaでプログラミングしてきましたが、学校でPythonを学んでいて、Javaでブール式を覚えています。
ブール値?(ブール値がtrueの場合、これが発生します):(ブール値がfalseの場合、これが発生します)
Pythonで上記のJavaコードを実行する方法はありますか?そして、上記のステートメントは適切に何と呼ばれていますか?
重複の可能性:
Pythonの3項条件演算子
私はかなり前からJavaでプログラミングしてきましたが、学校でPythonを学んでいて、Javaでブール式を覚えています。
ブール値?(ブール値がtrueの場合、これが発生します):(ブール値がfalseの場合、これが発生します)
Pythonで上記のJavaコードを実行する方法はありますか?そして、上記のステートメントは適切に何と呼ばれていますか?
はい、条件式を使用します:
somevalue if oneexpression else othervalue
例:
>>> 'foo' if True else 'bar'
'foo'
>>> 'foo' if False else 'bar'
'bar'
これが導入されたPython2.5より前は、人々はと式の組み合わせを使用してand
同様or
の結果を達成していました。
expression and truevalue or falsevalue
ただしtruevalue
、式自体の一部がブール値を持つものFalse
(つまり、0またはNone、または長さ0のシーケンスなど)に評価された場合は、とにかくfalsevalue
選択されます。
Python:
x if condition else y
例:
val = val() if callable(val) else val
greeting = ("Hi " + name) if name != "" else "Howdy pardner"
これは、3つのオペランドがあるため、「三項演算子」と呼ばれることがよくあります。ただし、「三項演算子」という用語は、3つのオペランドを持つすべての演算に適用されます。ほとんどのプログラミング言語には他の三項演算子がないので、「the」と言うのは明白です。しかし、私はそれをif/else
演算子または条件式と呼びます。
Pythonでは、and
andor
演算子の動作方法により、C派生言語で通常三項演算子を使用する場合にそれらを使用することもできます。
# provide a default value if user doesn't enter one
name = raw_input("What is your name? ") or "Jude"
print "Hey", name, "don't make it bad."
# call x only if x is callable
callable(x) and x()
はい、これを使用できます(よりpythonic):
>>> "foo"'if condition else "bar"
または、これ(より一般的ですが、推奨されません):
>>> condition and "foo" or "bar"