Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

So verwenden Sie den ternären Python-Operator

How-to-Use-the-Python-Ternary-Operator
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

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 is True.
  • 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-ternärer-operator-1

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.

ternär-op-ex1

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) is False.
  • bool(<any non-zero integer>) Rückgabe True.
>>> 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 is False.
  • Element bei Index 1 im Tupel: Der zu verwendende Wert, wenn die condition is True.

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?

Sollten Sie immer den ternären Python-Operator verwenden?

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:

ScoreSchwierigkeitsgrad
Weniger als 10Einfache
Zwischen 10 und 20 mittlere
Größer als 20hart

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.

ternary-operator-example

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.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder