2010-02-03 22 views
60

wissen Sie, wenn Python einige Keyword oder Ausdruck wie in C++ unterstützt Werte zurück basierend auf if Zustand, alle in der gleichen Zeile (Die C++ if mit dem Fragezeichen ausgedrückt ?)Bedingter Operator in Python?

// C++ 
value = (a > 10 ? b : c) 
+4

Dieser C++ - Operator heißt der "Bedingungsoperator" oder der "ternäre Operator". –

+1

Duplizieren Sie alle diese: http://StackOverflow.com/search?q=%5Bpython%5D+ternary. Konkret: http://stackoverflow.com/questions/135303/how-can-i-closely-achieve-from-cc-in-python –

+0

mögliche Duplikate von [Hat Python einen ternären Bedingungsoperator?] (Http: //stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator) – ks1322

Antwort

105

Von Python 2.5 ab Sie tun können:

value = b if a > 10 else c 

Früher hätten Sie so etwas wie die folgenden tun, obwohl die Semantik als der Kurzschluss-Effekt nicht identisch ist verloren:

Es gibt auch einen anderen Hack mit 'und ... oder', aber es ist am besten, ihn nicht zu verwenden, da er in einigen Situationen ein unerwünschtes Verhalten hat, das zu einem schwer zu findenden Fehler führen kann. Ich werde den Hack hier nicht einmal schreiben, da ich denke, dass es am besten ist, ihn nicht zu benutzen, aber Sie können darüber auf Wikipedia lesen, wenn Sie wollen.

+5

Ich habe mich immer gefragt, welche Notation sie als "zu verwirrend" dafür ablehnten. –

+0

Danke für Ihre Zeit! Das ist cool! –

+2

+1, Sie können diese Art von 'wenn' sogar mit Lambda-Ausdrücken verwenden! – Serge

-2

einfach ist das beste und funktioniert in jeder Version.

if a>10: 
     value="b" 
    else: 
     value="c" 
+0

Hallo, vielen Dank für Ihre Zeit! –