2009-11-06 15 views
80

可能性の重複で "場合":
Python Ternary OperatorPythonの等価C++

PythonでこのC/C++のコードを書くための方法はありますか? a = (b == true ? "123" : "456")

+0

のためにスワップアウトすることができます。 http://en.wikipedia.org/wiki/%3F :, http://en.wikipedia.org/wiki/Ternary_operation – GManNickG

+0

...または "条件式" –

答えて

157
a = '123' if b else '456' 
+10

この3進演算子はPython 2.5で導入されました。 –

+0

ありがとう!正確に私が探していたもの。 pythonのdocsウェブサイトでそれを見つけることができませんでした。 – huy

+0

将来参照するために、条件式のPythonドキュメントは次のとおりです。http://docs.python.org/reference/expressions.html#boolean-operations –

9

私の不可解なバージョン...

a = ['123', '456'][b == True] 
+1

これは、単一行if文が可能になる以前の古いアプローチの1つでした。論理的にどうやってできるかのようなもの: '真と偽の"または "棒" ' – jdi

14

a = 'foo' if True else 'bar'は、if文(のpythonを2.5+)三元を行うためのより近代的な方法ですが、ご使用のバージョンの1対1の等価では次のようになります。

a = b is True and "123" or "456" 

...またはあなたは、単にワン場合:Pythonでに短縮されなければならない

a = (b == True and "123" or "456") 

...一般的に、Bの値の真実性をテストするためにトン...

a = b and "123" or "456" 

? :は文字通りそれを経由して、三元-IFと呼ばれていますand or

+2

どのような黒い魔法はこれですか?ありがとう – Inversus

+1

"123"の値が実際に空の文字列だった場合、またはfalse値に評価された場合、ここのアプローチはあなたに逆行する可能性があることに注意してください。 if..elseは少し安全です。 – jdi

+0

ニート!ありがとう。 –