Problem: Wie kann man einzeilige bedingte Zuweisungen in Python durchführen?
Beispiel: Nehmen wir an, Sie beginnen mit dem folgenden Code.
x = 2boo = True
Sie wollen den Wert von x
auf 42
setzen, wenn boo
True
ist, und sonst nichts tun.
Lassen Sie uns in die verschiedenen Möglichkeiten eintauchen, dies in Python zu erreichen. Wir beginnen mit einer Übersicht:
Übung: Führen Sie den Code aus. Sind alle Ausgaben gleich?
Nächstens werden Sie in jede dieser Methoden eintauchen und Ihre Einzeiler-Superkraft steigern!
Inhaltsverzeichnis
Methode 1: Ternärer Operator
Der einfachste ternäre Operator x if c else y
gibt den Ausdruck x
zurück, wenn der boolesche Ausdruck c
zu True
ausgewertet wird. Andernfalls, wenn der Ausdruck c
zu False
ausgewertet wird, gibt der ternäre Operator den alternativen Ausdruck y
zurück.
<OnTrue> if <Condition> else <OnFalse>
Operand | Beschreibung |
---|---|
<AufWahr> | Der Rückgabeausdruck des Operators, falls die Bedingung zu True |
<Bedingung> | Die Bedingung, die bestimmt, ob der <AufWahr>- oder der <AufFalsch>-Zweig zurückgegeben werden soll. |
<AufFalsch> | Der Rückgabeausdruck des Operators für den Fall, dass die Bedingung zu False |
Kehren wir zu unserem Beispielproblem zurück! Sie wollen den Wert von x
auf 42
setzen, wenn boo
True
ist, und sonst nichts tun. So geht das in einer einzigen Zeile:
x = 42 if boo else x
Während die Verwendung des ternären Operators funktioniert, fragen Sie sich vielleicht, ob es möglich ist, den Teil ...else x
zu vermeiden, um den Code übersichtlicher zu gestalten? In der nächsten Methode erfahren Sie, wie!
Wenn Sie Ihr Verständnis für den ternären Operator verbessern wollen, sehen Sie sich das folgende Video an:
Sie können auch den zugehörigen Artikel lesen:
- Python One Line Ternary
Methode 2: Einzeilige If-Anweisung
Wie bei der vorherigen Methode möchten Sie den Wert von x
auf 42
setzen, wenn boo
True
ist, und ansonsten nichts tun. Aber Sie wollen keinen redundanten else-Zweig haben. Wie macht man das in Python?
Die Lösung, um den else-Teil des ternären Operators zu überspringen, ist überraschend einfach – verwenden Sie eine standardmäßige if-Anweisung ohne else-Zweig und schreiben Sie sie in eine einzige Codezeile:
if boo: x = 42
Um mehr darüber zu erfahren, was Sie in eine einzige Zeile packen können, sehen Sie sich mein Tutorial-Video „If-Then-Else in One Line Python“ an:
Methode 3: Ternary Tuple Syntax Hack
Eine Kurzform des ternären Operators ist die folgende Tupel-Syntax.
Syntax: Sie können die Tupel-Syntax (x, y)
verwenden, die aus einem Tupel (x, y)
und einer in einer eckigen Klammer eingeschlossenen Bedingung c
besteht. Hier eine intuitivere Darstellung dieser Tupel-Syntax.
(<OnFalse>, <OnTrue>)
Operand | Beschreibung |
---|---|
<AufWahr> | Der Rückgabeausdruck des Operators, falls die Bedingung zu True |
<Bedingung> | Die Bedingung, die bestimmt, ob der <AufWahr>- oder der <AufFalsch>-Zweig zurückgegeben werden soll. |
<AufFalsch> | Der Rückgabeausdruck des Operators für den Fall, dass die Bedingung zu False |
In der Tat, ist die Reihenfolge der Operanden <OnFalse>
und <OnTrue>
im Vergleich zum einfachen ternären Operator einfach umgedreht. Zunächst gibt es die Verzweigung, die zurückgegeben wird, wenn die Bedingung NICHT erfüllt ist. Zweitens wird die Verzweigung ausgeführt, die zurückgegeben wird, wenn die Bedingung erfüllt ist.
x = (x, 42)
Geschickt! Die Bedingung boo
ist erfüllt, also ist der Rückgabewert, der in die Variable x
übergeben wird, der <OnTrue>
-Zweig 42
.
Keine Sorge, wenn dich das verwirrt – du bist nicht allein. Sie können die Tupel-Syntax ein für alle Mal klären, indem Sie meinen ausführlichen Blog-Artikel studieren.
Verwandter Artikel: Python Ternary – Tuple Syntax Hack
Python One-Liners Book
Python Programmierer werden ihre Informatikkenntnisse mit diesen nützlichen Einzeilern verbessern.
Python One-Liners wird Ihnen beibringen, wie man „Einzeiler“ liest und schreibt: prägnante Aussagen über nützliche Funktionen, verpackt in einer einzigen Codezeile. Sie lernen, wie Sie systematisch jede Zeile Python-Code entpacken und verstehen und wie ein Experte eloquentes, stark komprimiertes Python schreiben können.
Die fünf Kapitel des Buches behandeln Tipps und Tricks, reguläre Ausdrücke, maschinelles Lernen, zentrale Themen der Datenwissenschaft und nützliche Algorithmen. Detaillierte Erklärungen von Einzeilern führen in wichtige Konzepte der Informatik ein und fördern Ihre Programmier- und Analysefähigkeiten. Sie lernen fortgeschrittene Python-Funktionen kennen, wie Listenverständnis, Slicing, Lambda-Funktionen, reguläre Ausdrücke, Map- und Reduce-Funktionen und Slice-Zuweisungen. Sie werden auch lernen, wie man:
– Datenstrukturen nutzen, um reale Probleme zu lösen, wie z.B. boolesche Indizierung, um Städte mit überdurchschnittlicher Umweltverschmutzung zu finden
– NumPy-Grundlagen wie Array, Shape, Axis, Type, Broadcasting, fortgeschrittene Indizierung, Slicing, Sortieren, Suchen, Aggregieren und Statistik verwenden
– Grundlegende Statistiken von mehrdimensionalen Datenarrays und die K-Means-Algorithmen für unüberwachtes Lernen berechnen
– Fortgeschrittenere reguläre Ausdrücke mit Gruppierung und benannten Gruppen erstellen, Negative Lookaheads, Escape-Zeichen, Leerzeichen, Zeichensätze (und negative Zeichensätze) und Greedy/Nonreedy-Operatoren
– Ein breites Spektrum an Informatik-Themen verstehen, einschließlich Anagrammen, Palindromen, Obermengen, Permutationen, Faktorzahlen, Primzahlen, Fibonacci-Zahlen, Verschleierung, Suche und algorithmische Sortierung
Am Ende des Buches werden Sie wissen, wie man Python in seiner besten Form schreibt und prägnante, schöne „Python-Kunstwerke“ in nur einer einzigen Zeile erstellt.
Holen Sie sich Ihre Python One-Liners jetzt!!!
Während seiner Arbeit als Forscher im Bereich verteilter Systeme entdeckte Dr. Christian Mayer seine Liebe zum Unterrichten von Informatikstudenten.
Um Studenten zu helfen, ein höheres Niveau an Python-Erfolg zu erreichen, gründete er die Programmierausbildungs-Website Finxter.com. Er ist Autor des beliebten Programmierbuchs Python One-Liners (NoStarch 2020), Mitautor der Coffee Break Python-Reihe von Büchern im Selbstverlag, Informatik-Enthusiast, Freiberufler und Inhaber eines der 10 größten Python-Blogs weltweit.
Seine Leidenschaften sind Schreiben, Lesen und Programmieren. Aber seine größte Leidenschaft ist es, aufstrebende Programmierer durch Finxter zu unterstützen und ihnen zu helfen, ihre Fähigkeiten zu verbessern. Sie können seiner kostenlosen E-Mail-Akademie hier beitreten.