Veröffentlicht am

Python-Einzeiler mit for und if

Python One-Liner für Data Engineers

Python-Einzeiler mit for und if

Python One-Liner bieten nicht nur Dateningenieuren eine effiziente Möglichkeit, komplexe Datenverarbeitungsaufgaben in kompakter Form zu codieren, indem sie komplexe Operationen in einfache, aber leistungsfähige Codezeilen übersetzen.

Hier ein Beispiel:

[print(x * '*') for x in range(1, 5)]

Der Code produziert folgendes:

*
**
***
****

Wir könnten auch schreiben:

for x in range(1, 5):
    print(x * '*')

Allgemeine Regel für One Liner

Die allgemeine Regel lautet wie folgt:

[Ausdruck Kontext]

Der Python-Interpreter erwartet die eckigen Klammern, um den Einzeiler überhaupt zu erkennen.

Ausdruck engl. Expression

Ein Ausdruck (engl. Expression) ist in der Programmierung ein Konstrukt, das ausgewertet werden kann, um dessen Wert zu bestimmen. Es besteht aus Konstanten, Variablen, Funktionen, Operatoren.

Beispiele:

x + 3
wert == True
print(‘Hello World’)
print(3 * ‘x’)

Kontext für Einzeiler

Der Kontext gibt die Werte an, auf die der Ausdruck angewendet werden soll. Hier können beliebig viele for und if-Statements stehen.

[print(x * '*') for x in range(1, 5) if x % 2 == 0]

Der Output sieht so aus:

**
****

Erläuterung

Zuerst wird also range(1, 5) erzeugt und auf die resultierende Folge wird noch x % 2 == 0 angewendet.

Die Langform lautet wie folgt:

for x in range(1, 5):
   if (x % 2 == 0):
       print(x * '*')

Anmerkung: Dazu wäre die if-Anweisung nicht nötig, wir könnten ja auch sagen range(2,5,2) – doch hier geht es um Einzeiler.

Verschachtelte Listen als einen Einzeiler

Das können wir noch weiter treiben:

[print(x, y) for x in range(3) for y in range(2)]

Probier aus auf dem Python Playground direkt im Browser.

Hier haben wir zwei verschachtelte Listen. Hier die aufgelöste Form:

for x in range(3):
   for y in range(2):
       print(x, y)

Einzeiler mit for und if

Der Phantasie sind keine Grenzen gesetzt:

[print(x, y) for x in range(3) if x % 2 == 0 for y in range(2)]

Hier werden die geraden x ausgewählt. Und jetzt wählen wir noch die ungeraden y und erhalten:

[print(x, y) for x in range(3) if x % 2 == 0 for y in range(2) if y % 2 == 1]

Hier die Langform: Statt einer Zeile benötigt sie ganze fünf Zeilen:

for x in range(3):
   if x % 2 == 0:
       for y in range(2):
           if y % 2 == 1:
               print(x, y)

Ergebnis eines One-Liners als Variable

Sterne ausgeben ist immer hübsch, aber in Wirklichkeit eher nutzlos. Hier eine praktische Einsatzmöglichkeit:

v = [(x,y) for x in range(3) if x % 2 == 0 for y in range(2) if y % 2 == 1]
print(v)

v ist also eine Liste von Tupeln, deren Inhalt den genannten Bedingungen genügt. Ganz schön praktisch für viele Anwendungen.

  • Python ist eine vielseitige Programmiersprache. Sie wird gerne genutzt, für Datenanalysen, Data Science und neu auch, um KI-gestützte, intelligente Apps zu entwickeln.

  • Webinar:

    So baust du LLMs in deine Anwendungen ein

    Erfahre in diesem exklusiven Webinar, wie du LLMs in deine Anwendungen einbaust.

    Mehr Infos zum Webinar findest du in der ausführlichen Beschreibung.

    Das kostenlose Webinar findet statt am Montag, 8. Juli um 13:00-13:45 MEZ via ZOOM.

    Trage dich in die Liste ein und du erhältst den Zugangslink und später den Link zur Aufzeichnung.

  • Sentence Embeddings für Vektordatenbanken
  • LLMs in Enterprise Search
  • Prompt Engineering Personas und Wiederholungen
  • Chatbot als Lernassistent
  • AI-Engineering-Fachglossar