2015-10-05 20 views
7

Sehr einfache Linie:Warum funktioniert dieser einfache Bedingungsausdruck nicht?

i = 3 
a = 2 if i in [1, 3, 6] else a = 7 

nicht mit:

SyntaxError: can't assign to conditional expression 

während erweitert, wie:

if i in [1, 3, 6]: 
    a = 2 
else: 
    a = 7 

gut funktioniert.

+0

Sorry Leute, hin und wieder vergesse ich die zusätzliche '=' und am Ende verblüfft, warum die Linie nicht funktioniert. – Gabriel

Antwort

11

Sie verwenden es falsch. Verwenden Sie es auf diese Weise:

a = 2 if i in [1, 3, 6] else 7 
+1

Ugh was für eine id * ot, ich vergesse immer das extra '='. Vielen Dank! Ich wähle diese Antwort aus, da sie zuerst hinzugefügt wurde. – Gabriel

4

sein sollte

a = 2 if i in [1, 3, 6] else 7 

Sie können es lesen als:

a = (((2 if i in [1, 3, 6] else 7))) 

das heißt, dass der Ausdruck auf der rechten Seite des Zuweisungszeichen vollständig ausgewertet und das Ergebnis dann der linken Seite zugewiesen. Der Ausdruck selbst ist zwei Werte getrennt durch die Bedingung.

Verwandte Themen