In diesem Handbuch erfahren Sie, wie Sie den ternären Operator in Python verwenden. Sie lernen die Syntax und codieren mehrere Beispiele, um zu verstehen, wie sie funktioniert.
Wir beginnen damit, uns anzusehen, wie die bedingte if-else-Anweisung funktioniert, und lernen dann, wie man einen äquivalenten Ausdruck mit dem ternären Operator schreibt.
Als Nächstes programmieren wir einige Beispiele und lernen dann, wie man das Verhalten des ternären Operators von Python mit einem Python-Tupel und einem Wörterbuch emuliert. Abschließend sehen wir uns einige Anwendungsfälle an, in denen Sie die Verwendung des ternären Operators bevorzugen sollten.
Lassen Sie uns beginnen!
The If-Else Statement in Python: A Review
Sie können mitcodieren, indem Sie eine Python REPL oder in starten Der Online-Python-Editor von Geekflare.
Die generische Syntax der if-else-Anweisung in Python lautet wie folgt:
if condition:
# do this
else:
# do this
Im obigen Ausschnitt condition
bezeichnet die zu prüfende Bedingung. Wenn die Bedingung zu ausgewertet wird True
, dann wird der if-Block ausgelöst. Wenn die Bedingung zu ausgewertet wird False
, dann werden die Anweisungen innerhalb des else-Blocks ausgeführt.
Hier ist ein Beispiel, wo die game_over
Variable wird ein boolescher Wert zugewiesen, je nachdem, ob der Wert von energy
kleiner oder gleich Null ist.
- If
energy <= 0
,game_over
isTrue
. - Sonst,
game_over
ist falsch.
Das folgende Code-Snippet zeigt, wie Sie dies mit den if-else-Bedingungsanweisungen tun:
energy = -1
if energy <= 0:
game_over = True
else:
game_over = False
print(game_over)
# True
In diesem Beispiel energy
ist -1, was kleiner als 0 ist. Also game_over
ist wahr.
Python Ternary Operator: Syntax and Examples

Python hat einen ternären Operator, der ähnlich wie der funktioniert ternärer Bedingungsoperator in Sprachen wie C und C++. Die allgemeine Syntax zur Verwendung lautet wie folgt:
expression1 if condition else expression2
Analysieren wir die obige Syntax:
condition
: Die zu prüfende Bedingung.expression1
: Der auszuwertende Ausdruck, wenn die Bedingung wahr ist.expression2
: Der auszuwertende Ausdruck, wenn die Bedingung False ist.
Jetzt werden wir identifizieren, was expression1
, expression2
und condition
sollte aus der if-else-Version des Codes stammen.

Zusammenfassend haben wir Folgendes, wenn wir den ternären Operator von Python verwenden.
game_over = True if energy <= 0 else False
print(game_over)
# True
Lassen Sie uns ein weiteres Beispiel codieren. Angenommen, Sie betreiben einen Buchladen und geben den Lesern einen Rabatt auf ihren Einkauf, je nachdem, wie oft sie Ihren Laden im letzten Jahr besucht haben.
Lassen numVisits
geben die Anzahl der Besuche an.
- If
numVisits > 7
, der Rabattprozentsatz,discount_perc
ist 20. - Sonst,
discount_perc
ist 5.
Wir verwenden den ternären Operator, um dem einen Wert zuzuweisen discount_perc
variabel.
numVisits = 10
discount_perc = 20 if numVisits > 7 else 5
print(discount_perc)
# 20 (as numVisits = 10 which is > 7)
Als Nächstes lernen wir, wie man den ternären Operator mit einem Python-Tupel und einem Wörterbuch emuliert.
Emulating the Ternary Operator with Python Tuple
Wie alle Iterables in Python folgen Tupel der Nullindizierung. Wenn Sie also zwei Elemente in einem Tupel haben, tuple_name[0]
bezeichnet das erste Element im Tupel und tuple_name[1]
ergibt das zweite Element im Tupel.
Die grundlegenden Datentypen in Python sind Integer, Float, String und Boolean. Python unterstützt die Typumwandlung, mit der Sie einen bestimmten Datentyp durch seine äquivalente Darstellung in einem anderen Datentyp darstellen können.
Starten Sie eine Python REPL und führen Sie die folgenden Beispiele aus. Wenn Sie versuchen, Ganzzahlen in Boolesche Werte umzuwandeln, werden Sie Folgendes bemerken:
bool(0)
isFalse
.bool(<any non-zero integer>)
RückgabeTrue
.
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(10)
True
In ähnlicher Weise haben wir beim Umwandeln von Boolean in Ganzzahlen Folgendes:
>>> int(True)
1
>>> int(False)
0
Wenn wir Typcasting und Indexierung zusammenstellen, können wir wie folgt vorgehen:
- Element bei Index 0 im Tupel: Der zu verwendende Wert, wenn die
condition
isFalse
. - Element bei Index 1 im Tupel: Der zu verwendende Wert, wenn die
condition
isTrue
.
Unter Verwendung des oben Gesagten haben wir Folgendes:
>>> numVisits = 10
>>> discount_perc = (5,20)[numVisits > 7]
>>> discount_perc
# 20
Hier der Zustand numVisits > 7
is True
as numVisits
ist 10. Weil int(True)
ist 1, der Wert von discount_perc
ist 20, das Element am Index 1.
Emulating the Ternary Operator with Python Dictionary
Sie können festlegen, True
und False
wie die Schlüssel des Wörterbuchs. Und Sie können einstellen expression1
und expression2
als die den Schlüsseln entsprechenden Werte True
und False
, Bzw.
some_dict = {True: expression1,
False: expression2
}
Was machst du als nächstes? Nun, wenn Sie verwenden some_dict[condition]
, expression1
entsprechend der True
Schlüssel wird ausgewertet, wenn die condition
is True
. Und expression2
wird ausgewertet, wenn die condition
is False
.
Lassen Sie uns das codieren discount_perc
Beispiel (erneut), aber diesmal mit einem Python-Wörterbuch.
>>> numVisits = 10
>>> discount_dict = {True: 20, False:5}
>>> discount_perc = discount_dict[numVisits > 7]
>>> discount_perc
# 20
Hier numVisits = 10
was größer als 7 ist. Daher die Bedingung numVisits > 7
is True
. So discount_dict[numVisits > 7]
bewertet zu discount_dict[True]
das ist der Wert 20.
Should You Always Use the Python Ternary Operator?

Bisher haben wir gelernt, wie man den ternären Operator verwendet. Aber sollten wir immer den ternären Operator verwenden? Nun, der ternäre Operator ist möglicherweise nicht für alle Anwendungsfälle die beste Wahl. In diesem Abschnitt wird aufgeschlüsselt, wann Sie den ternären Operator gegenüber if-else-Anweisungen bevorzugen sollten. Wir werden auch behandeln, wann wir die if-else-Anweisung anstelle des ternären Operators verwenden sollten.
Prägnanter als If-Else-Blöcke
Wie bereits erwähnt, ist der ternäre Operatorausdruck in Python prägnanter als die if-else-Anweisung. Daher können Sie es verwenden, um nach Bedingungen zu suchen und Ausdrücke im Handumdrehen bedingt auszuwerten.
Im folgenden Beispiel nums
ist eine Liste von 100 zufällig generierten ganzen Zahlen. Bei jeder der 100 Zahlen prüfen wir, ob sie gerade oder ungerade ist. Und diese Auswertung erfolgt inline innerhalb des f-Strings.
import random
nums = [random.choice(range(100)) for i in range(10)]
for num in nums:
print(f"{num} is {'even' if num%2==0 else 'odd'}")
# sample output
0 is even
56 is even
6 is even
53 is odd
62 is even
7 is odd
8 is even
77 is odd
41 is odd
94 is even
Der ternäre Operator erfordert die Else-Klausel
Wenn Sie die bedingten if-else-Anweisungen verwenden, ist die else-Klausel optional. Nehmen wir ein Beispiel. Das game_over
Variable ist auf gesetzt True
wenn die energy
auf einen Wert kleiner oder gleich Null abfällt.
Wenn jedoch die energy
größer als Null ist, die game_over
Variable wird nie initialisiert. Sie werden also auf Fehler stoßen, wenn Sie versuchen, auf die zuzugreifen game_over
variabel.
energy = 5
if energy <= 0:
game_over = True
print(f"Is the game over? {game_over}")
Traceback (most recent call last):
File "ternary_op.py", line 39, in <module>
print(f"Is the game over? {game_over}")
NameError: name 'game_over' is not defined
Eine Möglichkeit, dies zu beheben, ist die Einstellung game_over
zu False
zunächst und aktualisieren Sie es auf True
wenn das Energieniveau kleiner oder gleich Null ist.
energy = 5
game_over = False
if energy <= 0:
game_over1 = True
print(f"Is the game over? {game_over}")
Wenn Sie jedoch den ternären Python-Operator verwenden, der dem obigen entspricht, ist die else-Klausel nicht optional. Der ternäre Operator erfordert, dass der Ausdruck ausgewertet wird, wenn die condition
is False
.
game_over = True if energy <= 0 else False
Wenn Sie das oben ändern zu game_over = True if energy <= 0
Wenn Sie den Else-Teil entfernen, treten Syntaxfehler auf, wie gezeigt:
File "ternary_op.py", line 42
game_over = True if energy <= 0
^
SyntaxError: invalid syntax
Um nach mehreren Bedingungen zu suchen, verwenden Sie If-Else-Anweisungen
Betrachten Sie das Beispiel: Jede Frage in einem Satz von Codierungsinterviewfragen hat einen zugehörigen Schwierigkeitsgrad. Abhängig von dieser Punktzahl ordnen wir einer bestimmten Frage einen der drei Schwierigkeitsgrade zu: leicht, mittel oder schwer. Angenommen, wir haben Folgendes:
Score | Schwierigkeitsgrad |
Weniger als 10 | Einfache |
Zwischen 10 und 20 | mittlere |
Größer als 20 | hart |
Angesichts des Schwierigkeitsgrads können Sie den Schwierigkeitsgrad mit dem ternären Python-Operator wie folgt ermitteln:
score = 12
difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium"
print(difficulty_level)
# medium
Der ternäre Operatorausdruck im obigen Codeblock hat die folgende Form:
expression1 if condition1 else expression2 if condition2 else expression3
Obwohl prägnant, ist es ein bisschen schwierig zu lesen und zu analysieren. Das folgende Bild zeigt, wie der Kontrollfluss in diesem Fall abläuft.

Das folgende Code-Snippet zeigt eine äquivalente Implementierung mit if-else-Anweisungen. Wie man sieht, ist der Kontrollfluss viel einfacher zu verstehen und der Code besser lesbar.
if score < 10:
difficulty_level="easy"
elif score > 20:
difficulty_level="hard"
else:
difficulty_level="medium"
print(difficulty_level)
Wenn Sie also mehrere Bedingungen haben, sollten Sie die if-else-Blöcke anstelle des ternären Operators verwenden. Dadurch wird sichergestellt, dass der Code leicht lesbar und verständlich ist.
Auch wenn Sie mehrere Anweisungen ausführen müssen – je nachdem, ob die Bedingung wahr oder falsch ist – sollten Sie die Verwendung der if-else-Anweisung in Betracht ziehen.
Fazit
Hier ist eine Zusammenfassung dessen, was Sie in diesem Tutorial gelernt haben.
- In Python kann der ternäre Operator mit der folgenden Syntax verwendet werden:
expression1 if condition else expression2
. - Sie können das Verhalten des ternären Operators mithilfe von Python-Tupeln und -Wörterbüchern emulieren.
- Während der ternäre Operator eine prägnantere Alternative zu den if-else-Blöcken sein kann, sollten Sie sicherstellen, dass der Code lesbar ist. Um die Lesbarkeit des Codes zu verbessern, können Sie die if-else-Anweisungen anstelle des ternären Operators verwenden, insbesondere wenn Sie mehrere Bedingungen verketten müssen.
Als nächstes erfahren Sie, wie Sie sich das Tutorial ansehen Gleich- und Ungleichoperatoren in Python.