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
Operanden des ternären Operators

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

Python Ternary Tuple Syntax

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
Tupel-Syntax des ternären Operators

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

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.