Python One-Liners. Christian Mayer
Чтение книги онлайн.
Читать онлайн книгу Python One-Liners - Christian Mayer страница 13
print(calories['banana'] < calories['cappu'])
# False
Die Funktionen keys() und values() erlauben den Zugriff auf alle Schlüssel und Werte des Dictionary:
print('apple' in calories.keys())
# True
print(52 in calories.values())
# True
Mit der items()-Methode greifen Sie auf die (Schlüssel, Wert)-Paare eines Dictionary zu:
for k, v in calories.items():
print(k) if v > 500 else None
# 'choco'
Auf diese Weise können Sie leicht über alle Schlüssel und alle Werte in einem Dictionary iterieren, ohne einzeln auf sie zugreifen zu müssen.
Zugehörigkeit
Verwenden Sie das Schlüsselwort in, um zu prüfen, ob die Menge, Liste oder das Dictionary ein bestimmtes Element enthält (siehe Listing 1–9).
print(42 in [2, 39, 42])# True
print("21" in {"2", "39", "42"})
# False
print("list" in {"list" : [1, 2, 3], "set" : {1,2,3}})
# True
Listing 1–9 Das Schlüsselwort in benutzen
Sie verwenden das Schlüsselwort in zum Testen, ob der Integer-Wert 42
zu einer Liste von Integer-Werten oder ob der String-Wert "21" zu einer Menge von Strings gehört. Wir sagen, dass x ein Mitglied von y ist, falls das Element x in der Sammlung y auftaucht.Das Überprüfen von Mengenzugehörigkeiten geht schneller als das Überprüfen von Listenzugehörigkeiten: Um zu prüfen, ob das Element x in Liste y auftaucht, müssen Sie die ganze Liste durchlaufen, bis Sie x gefunden oder alle Elemente geprüft haben. Mengen dagegen sind fast wie Dictionaries implementiert: Um zu prüfen, ob das Element x in Menge y auftaucht, führt Python intern eine Operation y[hash(x)] durch und prüft, ob 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")