Direkt zum Inhalt

Python's Ternary Operators Guide: Steigerung der Code-Effizienz

Lerne, wie du deine Python-Kodierfähigkeiten mit ternären Operatoren verbessern kannst, um effizienteren und lesbaren Code zu erstellen. Außerdem erhältst du Tipps, wie du deine bedingten Anweisungen vereinfachen kannst.
Aktualisierte 15. Jan. 2025  · 11 Min. Lesezeit

Python-Kenntnisse sind für die Arbeit mit Daten unerlässlich, egal ob du Datensätze analysierst oder komplexe Modelle erstellst. Guter Python-Code ist leicht zu verstehen und zu bearbeiten, aber wenn du Bedingungen hinzufügst, kann es unübersichtlich werden. Da kommen die ternären Operatoren gerade recht.

Ternäre Operatoren sind wie eine Abkürzung, die dir hilft, deinen Code sauber und übersichtlich zu halten.

In diesem Artikel gehen wir auf die Details der ternären Operatoren ein und zeigen dir anhand von Beispielen, wie du sie in deinem Code verwenden kannst. Außerdem werden wir die Vor- und Nachteile der Verwendung von ternären Operatoren besprechen.

Was sind ternäre Operatoren in Python?

Das Wort "ternär" bedeutet "aus drei Teilen bestehend". Der ternäre Operator wurde so genannt, weil er drei Operanden umfasst:

  • Eine Bedingung
  • Ein Ausdruck, der ausgeführt wird, wenn die Bedingung wahr ist
  • Ein weiterer Ausdruck, der ausgeführt wird, wenn die Bedingung falsch ist.

In der Programmierliteratur findest du ternäre Operatoren unter verschiedenen Namen: Bedingter Operator, ternärer Wenn-Operator und Inline-Wenn (IIF).

Ternäre Operatoren gibt es nicht nur in Python. Auch Sprachen wie Java, JavaScript und C haben ihre Versionen. Auch wenn sie sich in der Syntax leicht unterscheiden, haben sie alle die gleiche Grundfunktionalität. Erklären wir es anhand eines einfachen Beispiels.

Stell dir vor, du musst eine Entscheidung treffen, z.B. ob du an den Strand gehen oder zu Hause bleiben willst. Du könntest diese Entscheidung vom Wetter abhängig machen. Wenn es sonnig ist, gehst du an den Strand, aber wenn es regnet, bleibst du zu Hause. In einer if-else-Bedingung würde es so aussehen:

if weather=="sunny":	print("Go to the beach")else:	print("Stay home")

Übersetzen wir diesen Entscheidungsprozess nun in eine ternäre Operation:

Wenn es sonnig ist, gehst du an den Strand (x), andernfalls (sonst) bleibst du zu Hause (y).

In Ternary Python würde das also folgendermaßen aussehen:

Beide Fälle sind korrekt. Welcher ist deiner Meinung nach der sauberste in Python-Code?

Die grundlegende Syntax der ternären Operatoren in Python

Python Ternäre Operatoren

Lass uns nun tiefer einsteigen und die ternären Operatoren im Detail erkunden. Die allgemeine Form der ternären Operatoren in Python sieht folgendermaßen aus:

Zustand

Die Bedingung in einem ternären Python-Operator kann ein beliebiger Ausdruck sein, der einen booleschen Wert ergibt (Wahr oder Falsch). Dieser Ausdruck kann Vergleiche oder relationale Operatoren (<,>,==,!=), logische Operatoren (logische UND-, logische ODER- und logische NICHT-Operationen), Funktionsaufrufe oder jede andere Operation beinhalten, die einen booleschen Wert ergibt.

Die Bedingung könnte zum Beispiel lauten:

  • Ein einfacher Vergleich: x < 100
  • Eine Kombination von Vergleichen: x < 10 und y > 25
  • Ein Funktionsaufruf: is_numer(Wert)
  • Ein logischer Ausdruck: x > 0 oder y < 0

Entscheidend ist, dass die Bedingung entweder als True oder False ausgewertet werden sollte, je nachdem, welche Logik du implementieren willst. Das Ergebnis des ternären Operators hängt dann davon ab, ob diese Bedingung als True oder False ausgewertet wird.

result_if_true

Dieser Teil des ternären Operators wird oft als "Ergebnis, wenn wahr" oder "Wert, wenn wahr" bezeichnet. Sie stellt die Aktion oder den Wert dar, die/der ausgeführt oder zugewiesen werden soll, wenn die angegebene Bedingung als wahr bewertet wird.

  • Eine Variable: x
  • Ein konstanter Wert: 10
  • Ein Funktionsaufruf: wert_rechnen()
  • Ein arithmetischer Ausdruck:x-1, x * 2
  • Jeder andere gültige Python-Ausdruck, der einen Wert ergibt

Mit dem result_if_true-Teil kannst du das Ergebnis oder den Wert angeben, den du haben möchtest, wenn die Bedingung erfüllt ist oder als True ausgewertet wird.

result_if_False

Ähnlich wie der "result if true"-Teil kann auch der "result if false"-Teil ein beliebiger gültiger Python-Ausdruck oder -Wert sein, z. B:

  • Eine Variable: y
  • Ein konstanter Wert: 0
  • A function call: get_value()
  • Ein arithmetischer Ausdruck: y + 2
  • Jeder andere gültige Python-Ausdruck, der einen Wert ergibt

Diese Flexibilität ermöglicht es dir, verschiedene Ergebnisse oder Werte festzulegen, je nachdem, ob die Bedingung erfüllt ist.

Im folgenden Abschnitt gehe ich auf Beispiele ein, die die meisten Kombinationen von Bedingungen, result_if_True und result_if_False, abdecken.

Ternäre Operatoren in Python verwenden

Ternäre Operatoren bieten eine prägnante Möglichkeit, bedingte Logik nicht nur in einfachen if-else-Anweisungen, sondern auch in anderen Python-Konstrukten wie Tupeln und Wörterbüchern auszudrücken.

Ternäre Operatoren in if-else-Anweisungen

Bei ternären Operatoren musst du sicherstellen, dass die Bedingung True oder False ergibt. Die folgenden Beispiele zeigen, wie ternäre Operatoren in ihren drei Teilen verschiedene Datentypen auf einmal verarbeiten können. Diese Flexibilität macht sie nützlich, um verschiedene Arten von Informationen in einem einzigen Ausdruck zu kombinieren.

Bedingung: Vergleich, Ergebnis bei Wahr: Variable, Ergebnis bei Falsch: Variable

#the result will be x if x is less than y otherwise it will be yx = 3y = 5result = x if x < y else y

Bedingung: Mitgliedschaft, Ergebnis bei Wahr: konstant, Ergebnis bei Falsch: konstant

# the result will be “Element is present” if the element exists in my_list otherwise it will be "Element is not present"my_list = [1, 2, 3, 4, 5]element = 6result = "Element is present" if element in my_list else "Element is not present"

Bedingung: logisch, Ergebnis bei Wahr: konstant, Ergebnis bei Falsch: konstant

# the result will be “Even” if the mod of X is 0 otherwise the result will be “Odd”x = 5result = "Even" if x % 2 == 0 else "Odd"

Bedingung: Logisch, Ergebnis bei Wahr: Arithmetisch, Ergebnis bei Falsch: Arithmetisch

# if x is less than y the results will be the sum of x and y otherwise the result will be the subtraction. x = 5y = 7result = x + y if x < y else x - y

Bedingung: logisch, Ergebnis bei Wahr: Variable, Ergebnis bei Falsch: Funktion

# in case x is not None value, the result is x otherwise it is the output of the get_defult values function, which is “Default”def get_default_value():    return "Default"x = Noneresult = x if x is not None else get_default_value()

Zustand: Funktion, Ergebnis bei True: Arithmetischer Ausdruck, Ergebnis bei Falsch: Funktion

# If the customer_type is not "Regular”, the get_discount function will be called with customer_type as an argument; otherwise, the discount will be set to 0.def get_discount(customer):    return 10 if customer == "VIP" else 5customer_type = "Regular"discount = get_discount(customer_type) if customer_type != "Regular" else 0

Bedingung: logisch, Ergebnis wenn wahr: Funktion, Ergebnis bei Falsch: Funktion

# in case a  is less than b print the value “a is greater” otherwise print “b is greater”a=100b=200print(a,"is greater") if (a>b) else print(b,"is greater")

Verschachtelte ternäre Operatoren

Der verschachtelte ternäre Operator in Python ermöglicht es dir, mehrere bedingte Ausdrücke innerhalb eines einzigen ternären Operators zu kombinieren. Das kann besonders nützlich sein, wenn du mehrere Bedingungen auswerten und je nach Bedingung unterschiedliche Ergebnisse zurückgeben musst.

Betrachten wir ein Beispiel, bei dem wir die Kategorie einer bestimmten Zahl anhand ihres Wertes bestimmen wollen:

num = 15size= "Small" if num < 4 else ("Medium" if num < 10 else "Large")

In diesem Beispiel:

  • Der äußere ternäre Operator prüft, ob die Zahl kleiner als 4 ist. Wenn ja, weist es die Kategorie "Klein" zu.
  • Wenn die Zahl nicht kleiner als 10 ist, prüft der innere ternäre Operator, ob die Zahl kleiner als 10 ist. Wenn ja, wird die Kategorie "Mittel" zugewiesen.
  • Wenn keine der beiden Bedingungen erfüllt ist, wird die Kategorie "Groß" zugewiesen.

Ternäre Operatoren mit Tupeln

Ternäre Operatoren können innerhalb von Tupeln verwendet werden, um Werte auf der Grundlage einer Bedingung auszuwählen. Zum Beispiel:

value = (x if condition else y)

Es gibt jedoch eine ausgefeiltere Methode, um ternäre Operatoren auf Tupel anzuwenden. Diese Methode nutzt die Indizierungsfähigkeiten der Tupel, um bedingte Operationen durchzuführen. In Kombination mit Tupeln, unveränderlichen Folgen von Elementen, ermöglichen ternäre Operatoren kompakte und lesbare bedingte Ausdrücke.

Im Kontext von Tupeln wählt der ternäre Operator einen von zwei Werten auf der Grundlage einer Bedingung aus und gibt ihn zurück. Dies wird durch die Indizierung des Tupels mit dem Ergebnis der Bedingung als Index erreicht. Wenn die Bedingung True ist, in Python True =1, wird das Element bei Index 1 (entsprechend result_if_true) zurückgegeben; andernfalls wird das Element bei Index 0 (entsprechend result_if_false) zurückgegeben.

Dieser Ansatz kann helfen, einfache bedingte Zuweisungen oder Auswertungen innerhalb von Ausdrücken durchzuführen. Achte aber darauf, dass der Code lesbar und verständlich bleibt.

Beispiel:

a, b = 1, 5print((a, b)[a < b])
  • ( a,b): Dadurch wird ein Tupel ( a,b) mit zwei Elementen erstellt, wobei a das erste Element und b das zweite Element ist. In Python beginnt die Indizierung bei 0. Also hat a den Index 0 und b den Index 1.
  • [a < b]: Dies ist ein Indizierungsvorgang. Wenn a kleiner als b ist, wird es als True ausgewertet, was in Python einer 1 entspricht. Wenn a nicht kleiner als b ist, wird es als False ausgewertet, was in Python einer 0 entspricht.
  • Daher wählt diese Indizierungsoperation effektiv das erste oder zweite Element des Tupels auf der Grundlage des Ergebnisses des Vergleichs a < b aus.
  • Da a gleich 1 und b gleich 5 ist, wird a < b als True ausgewertet, was 1 bedeutet. Also wird der Ausdruck b ausgewählt und 5 gedruckt.

Ternäre Operatoren mit Wörterbüchern

Das Konzept der Indizierung, das bei Tupeln angewandt wird, kann auch auf Wörterbücher ausgeweitet werden. Im Gegensatz zu Tupeln haben Dictionaries in Python jedoch keinen traditionellen Index. Stattdessen verwenden Wörterbücher ihre Schlüssel, um auf Werte zuzugreifen und sie abzurufen.

Wörterbuchschlüssel erfüllen einen ähnlichen Zweck wie Indizes und ermöglichen eine effiziente Abfrage von Werten, die mit bestimmten Schlüsseln verbunden sind. Wörterbuchschlüssel sind ähnlich wie Tupel unveränderlich, d.h. sie können intern nicht geändert werden, ohne die Identität des Wörterbuchs zu ändern.

a, b = 1, 5result= {True: a, False: b} [a < b]
  • Dieser Code ist ein Wörterbuchausdruck, der mit einer Schlüsselwert-Suche kombiniert ist.
  • {True: a, False: b}: Dadurch wird ein Wörterbuch mit zwei Schlüssel-Werte-Paaren erstellt.
  • Wenn die Bedingung [a < b] Wahr ist, wird der Schlüssel Wahr mit dem Wert a verknüpft, und wenn die Bedingung Falsch ist, wird der Schlüssel Falsch mit dem Wert b verknüpft.

Vor- und Nachteile der ternären Operatoren in Python

Ternäre Operatoren haben ihre Höhen und Tiefen, genau wie jedes andere Werkzeug. Es ist wichtig, beide Seiten kennenzulernen, um die richtige Balance zu finden und sie effektiv zu nutzen.

Zunächst wollen wir die Vorteile der ternären Operatoren von Python kennenlernen:

  • Der Code wird kurz und klar sein.
  • Der Code wird leichter zu lesen und zu verstehen sein, weil er übersichtlicher ist.
  • Sie sind praktisch, wenn du Werte auf der Grundlage bestimmter Bedingungen zuweisen musst.
  • Dein Code sieht nicht nur sauberer aus, sondern kann auch schneller laufen, da er nicht so viele Optionen überprüfen muss.

Die Nachteile der ternären Operatoren in Python sind folgende:

  • Ternäre Operatoren sind möglicherweise nicht ideal für Szenarien, die mehrere Bedingungen erfordern.
  • Komplexe und verschachtelte ternäre Operatoren können zu Verwirrung und Fehlern führen.
  • Die übermäßige Verwendung von ternären Operatoren im Code kann zu einem zu komplexen Code führen, der schwer zu verstehen und zu warten ist.
  • Der logische Fluss von Codes, die komplexe ternäre Operatoren enthalten, ist möglicherweise nicht klar, was das Debuggen des Codes extrem schwierig macht und das Erkennen und Beheben von Fehlern erschwert.

Ternäre Operatoren Bewährte Praktiken

Natürlich gibt es wie bei jedem Werkzeug Herausforderungen, die du bei der Arbeit mit ihnen bewältigen musst. Behalte diese Best Practices im Hinterkopf, wenn du sie in deinem Code verwendest:

  • Nutze sie weise: Komplexe Bedingungen in ternären Operatoren können den Code schwer lesbar machen. Gliedere sie bei Bedarf in if-else-Anweisungen auf.
  • Geh nicht zu tief rein: Wenn du zu viele ternäre Operatoren verschachtelst, entsteht ein unübersichtliches Durcheinander. Halte die Dinge einfach und leicht zu befolgen.
  • Teste gründlich: Stelle sicher, dass dein Code mit ternären Operatoren in verschiedenen Szenarien wie erwartet funktioniert.
  • Erkläre deine Logik: Füge Kommentare hinzu, um zu erklären, was der ternäre Operator tut, damit der Code besser gewartet werden kann.
  • Sei konsequent: Verwende ternäre Operatoren in deinem gesamten Code auf die gleiche Weise, um einen sauberen und lesbaren Stil zu gewährleisten.
  • Behandle Fehler: Baue Möglichkeiten ein, um mit unerwarteten Situationen bei der Verwendung von ternären Operatoren umzugehen.

Baue deine Python-Kenntnisse aus

Die ternären Operatoren von Python sind Edelsteine in Python. Sie ermöglichen es dir, schlanken, effizienten Code zu schreiben, indem sie komplexe bedingte Logik in einer einzigen, eleganten Zeile zusammenfassen.

Die Verwendung von ternären Operatoren verbessert nicht nur die Lesbarkeit des Codes, sondern spiegelt auch ein tieferes Verständnis der ausdrucksstarken Syntax von Python wider. Wenn du deine Python-Reise fortsetzt, wird die Nutzung dieser kompakten Form des bedingten Ausdrucks zweifellos deine Programmierkenntnisse verbessern und zu raffinierteren, ausgefeilteren Skripten führen.

Hier sind ein paar Links, die dir helfen, deine Python-Kenntnisse auszubauen und die Leiter der Python-Programmierung Schritt für Schritt zu erklimmen.

FAQs

Was ist ein ternärer Operator in Python?

Ein ternärer Operator ist ein bedingter Ausdruck, der eine Bedingung auswertet und einen von zwei Werten zurückgibt, je nachdem, ob die Bedingung wahr oder falsch ist. Die Syntax eines ternären Operators in Python lautet value_if_true if condition else value_if_false. Sie wertet die Bedingung zuerst aus; wenn sie wahr ist, gibt sie value_if_true zurück; andernfalls gibt sie value_if_false zurück

Welche Vorteile hat die Verwendung von ternären Operatoren?

Ternäre Operatoren machen den Code kompakter und leichter auf einen Blick zu verstehen. Sie reduzieren die Anzahl der Zeilen in deinem Code und verbessern die Lesbarkeit für einfache Bedingungen.

Was sind die Nachteile der Verwendung von ternären Operatoren?

Ternäre Operatoren können die Lesbarkeit von Code für einfache Bedingungen verbessern, aber sie können die Lesbarkeit von Code für komplexe Bedingungen oder verschachtelte Operationen erschweren. Wenn du sie zu oft verwendest, kann der Code schwer zu verstehen sein.

Wann solltest du keine ternären Operatoren verwenden?

Vermeide die Verwendung von ternären Operatoren für komplexe Bedingungen oder wenn der Ausdruck schwer zu verstehen ist. Wenn der Code dadurch weniger lesbar wird, verwende stattdessen traditionelle if-else-Anweisungen.


Rayan Yassminh's photo
Author
Rayan Yassminh
LinkedIn
Twitter

Ein vielseitiger Data Scientist/Analyst, der sein Fachwissen in quantitativer Analyse mit modernster Technologie verbindet. Mit einem Doktortitel in Geophysik und Postgraduiertenabschlüssen in Künstlicher Intelligenz und Datenwissenschaft nutzt Rayan ihre starken Problemlösungskompetenzen, um aus komplexen Datensätzen verwertbare Erkenntnisse zu gewinnen. Rayans Forschungsbeiträge erstrecken sich über verschiedene Bereiche und zeigen, dass sie in der Lage ist, fortschrittliche Techniken anzuwenden, um reale Herausforderungen zu bewältigen.

Themen

Setze deine Python-Lernreise noch heute fort!

Lernpfad

Python Programming

19hrs hr
Level-up your programming skills. Learn how to optimize code, write functions and tests, and use best-practice software engineering techniques.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen