Название | Python One-Liners |
---|---|
Автор произведения | Christian Mayer |
Жанр | Математика |
Серия | |
Издательство | Математика |
Год выпуска | 0 |
isbn | 9783969101155 |
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.
# Deklaration der for-Schleife
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.
while True:
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