Was ist der beste Weg, den ternären Operator in Python zu ersetzen? [Duplikat]

9

Wenn ich Code habe wie:

%Vor%

Wie soll ich es in Python übersetzen? Kann ich das tun?

%Vor%

Bleibt x noch außerhalb der if / then-Blöcke? Oder muss ich so etwas tun?

%Vor%     
mike 13.03.2009, 18:23
quelle

6 Antworten

27

Verwenden Sie den ternären Operator (formal bedingter Ausdruck ) in Python 2.5 +.

%Vor%     
phihag 13.03.2009, 18:24
quelle
5

Der ternäre Operator erwähnt ist nur von Python 2.5 verfügbar. Aus der WeekeePeedeea :

  

Obwohl es für einige verzögert worden war   Jahre durch Unstimmigkeiten über die Syntax, a   ternärer Operator für Python war   als Python-Erweiterung genehmigt   Vorschlag 308 und wurde dem 2.5 hinzugefügt   Veröffentlichung im September 2006.

     

Pythons ternärer Operator unterscheidet sich von   der allgemeine?: Operator in der Reihenfolge von   seine Operanden; Die allgemeine Form ist op1 if condition else op2 . Diese Form   lädt ein, op1 als normal zu betrachten   Wert und op2 als Ausnahmefall.

     

Vor 2.5 könnte man das Hässliche benutzen   Syntax (lambda x:op2,lambda x:op1)[condition]() , die auch dauert   Sorge dafür, nur Ausdrücke auszuwerten   die tatsächlich benötigt werden, um   Nebenwirkungen vermeiden.

    
Adriano Varoli Piazza 13.03.2009 18:49
quelle
2

Ich benutze immer noch 2.4 in einem meiner Projekte und bin schon ein paar Mal darauf gestoßen. Die eleganteste Lösung, die ich dafür sehe, ist:

%Vor%

Ich mag das, weil es einen klareren booleschen Test darstellt als die Verwendung einer Liste mit den Indexwerten 0 und 1, um Ihren Rückgabewert zu erhalten.

    
adam 16.03.2009 18:34
quelle
1

Duplizieren Sie diesen.

Ich benutze dies (obwohl ich darauf warte, dass jemand einen Kommentar ablehnt oder einen Kommentar abgibt, wenn es falsch ist):

%Vor%     
jonstjohn 13.03.2009 18:29
quelle
0

Sie könnten etwas wie:

verwenden %Vor%

obwohl es nicht sehr pythonisch ist

(die anderen Optionen sind näher an C / PERL, aber das beinhaltet mehr Tupelmagie)

    
Manuel Ferreria 13.03.2009 18:24
quelle
-1

Ein schöner Python-Trick benutzt das:

%Vor%

Er erstellt eine 2-gliedrige Liste, und der Boolesche Wert wird entweder 0 (falsch) oder 1 (wahr), wodurch das richtige Element ausgewählt wird. Nicht sehr gut lesbar, aber Pythonie:)

    
Eyal 13.03.2009 18:53
quelle

Tags und Links