Christian Mayer

Python One-Liners


Скачать книгу

der Rückgabewert nicht None ist.

       List und d

      Die List Comprehension (Listen-Abstraktion) ist eine beliebte Python-Eigenschaft, mit deren Hilfe Sie schnell Listen erzeugen und modifizieren können. Die einfache Formel lautet [ Ausdruck + Kontext ]:

      AusdruckSagt Python, was es mit den einzelnen Elementen in der Liste machen soll.

      KontextSagt Python, welche Listenelemente ausgewählt werden sollen. Der Kontext besteht aus einer beliebigen Anzahl von for- und if-Anweisungen.

      So ist z. B. in der List-Comprehension-Anweisung [x for x in range(3)] der erste Teil x der (Identitäts--)Ausdruck und der zweite Teil for x in range(3) der Kontext. Die Anweisung erzeugt die Liste [0, 1, 2]. Die Funktion range() liefert einen Bereich aufeinanderfolgender Integer-Werte 0, 1 und 2 zurück – wenn sie wie im Beispiel mit einem Argument verwendet wird. Ein weiteres Codebeispiel für die List Comprehension sieht folgendermaßen aus:

      # (name, $-income)

      customers = [("John", 240000),

      ("Alice", 120000),

      ("Ann", 1100000),

      ("Zach", 44000)]

      # your high-value customers earning >$1M

      whales = [x for x,y in customers if y>1000000]

      print(whales)

      # ['Ann']

      Die Set Comprehension funktioniert wie die List Comprehension, erzeugt aber eine Menge statt einer Liste.

       Kontrollfluss

      Die Kontrollfluss-Funktionalität erlaubt es Ihnen, in Ihrem Code Entscheidungen zu treffen. Algorithmen werden oft mit Kochrezepten verglichen, die aus einer sequenziellen Liste aus Anweisungen bestehen: Fülle den Topf mit Wasser, gib Salz hinzu, gib Reis hinzu, gieße das Wasser ab und serviere den Reis. So, ohne eine bedingte Ausführung, würde die Ausführung der Befehlsfolge nur wenige Sekunden dauern, und der Reis wäre auf keinen Fall fertig. Sie würden z. B. Wasser, Salz und Reis einfüllen und sofort wieder das Wasser abgießen, ohne zu warten, bis das Wasser heiß und der Reis gar wird.

      Auf unterschiedliche Umstände müssen Sie anders reagieren: Sie können den Reis nur in den Topf geben, falls das Wasser heiß ist, und Sie dürfen das Wasser nur dann aus dem Topf abgießen, falls der Reis gar ist. Es ist in Wirklichkeit nahezu unmöglich, Programme auf eine Weise zu schreiben, die vorhersieht, was deterministisch geschieht. Stattdessen müssen Sie Programme so schreiben, dass sie verschieden reagieren, falls unterschiedliche Bedingungen eintreten.

       if, else und elif

      Die Schlüsselwörter if, else und elif (siehe Listing 1–10) ermöglichen Ihnen die bedingte Ausführung unterschiedlicher Codezweige.

x = int(input("Ihr Wert: "))

      

if x > 3:

      print("Groß")

      

elif x == 3:

      print("Mittel")

      

else:

      print("Klein")

       Listing 1–10 Die Verwendung der Schlüsselwörter if, else und elif

      Hier wird zuerst die Benutzereingabe entgegengenommen, in ein Integer umgewandelt und in der Variablen x gespeichert

. Dann wird getestet, ob der Wert der Variablen größer als
, gleich
oder kleiner als
der Wert 3 ist. Mit anderen Worten, der Code reagiert auf eine reale Eingabe, die auf differenzierte Weise unvorhersehbar ist.

       Schleifen

      Für eine wiederholte Ausgabe von Codeschnipseln verwendet Python zwei Arten von Schleifen: for- und while-Schleifen. Mit deren Hilfe können Sie ganz leicht ein Programm schreiben, das nur aus zwei Zeilen Code besteht, die für immer und ewig laufen. Diese Wiederholung wäre sonst schwierig umzusetzen (eine Alternative ist die Rekursion.)

      In Listing 1–11 können Sie beide Schleifenvarianten in Aktion sehen.

      for i in [0, 1, 2]:

      print(i)

      '''

      0

      1

      2

      '''

      # While-Schleife – gleiche Semantik

      j = 0

      while j < 3:

      print(j)

      j = j + 1

      '''

      0

      1

      2

      '''

       Listing 1–11 Die Verwendung der Schlüsselwörter for und while

      Beide Schleifenvarianten geben auf der Shell die Integer 0, 1 und 2 aus, allerdings erledigen sie die Aufgabe unterschiedlich.

      Die for-Schleife deklariert eine Schleifenvariable i, die iterativ alle Werte in der Liste [0, 1, 2] annimmt. Sie durchläuft alle Werte, bis keine mehr da sind.

      Die while-Schleife führt den Schleifenkörper aus, solange eine bestimmte Bedingung erfüllt ist – in unserem Fall, solange j < 3.

      Es gibt zwei grundsätzliche Wege, um eine Schleife zu beenden: Sie können eine Schleifenbedingung definieren, die irgendwann zu False ausgewertet wird, oder Sie benutzen das Schlüsselwort break an der passenden Position im Schleifenkörper. Listing 1–12 zeigt ein Beispiel für diesen Fall.

      break # keine unendliche Schleife

      print("hello world")

      # hello world

       Listing 1–12 Das Schlüsselwort break

      Sie erzeugen eine while-Schleife mit einer Schleifenbedingung, die immer zu True ausgewertet wird. Auf den ersten Blick scheint sie also für immer zu laufen. Eine