Erklärung zur Lektion
Am Ende dieser Lektion kannst du:
(number, record)-Werte entpacken.In Python weist das Entpacken (Unpacking) Elemente einer Sequenz mehreren Variablen gleichzeitig zu:
service, region = ("api", "eu")Die Anzahl der Ziele muss der Anzahl der Elemente entsprechen, es sei denn, ein Ziel hat ein Sternchen. Ein Sternchen sammelt die übrigen Elemente in einer Liste:
first, *middle, last = [2, 4, 6, 8]Hier ist middle gleich [4, 6]. Es kann auch leer sein, wenn die Eingabe nur zwei Elemente enthält. In einer einzelnen Entpack-Zuweisung ist nur ein Ziel mit Sternchen erlaubt.
Die Mehrfachzuweisung macht auch das Vertauschen einfach: a, b = b, a wertet die rechte Seite aus, bevor die Namen zugewiesen werden.
Das Entpacken funktioniert natürlich mit for-Schleifen: for name, score in pairs: gibt den beiden Teilen jedes Paars sinnvolle Namen. Du kannst ein Paar auch innerhalb von enumerate() entpacken, mit for number, (name, score) in enumerate(pairs, start=1):. Das passt gut, wenn der Datensatz selbst mehrere Felder enthält, du aber auch seine Position brauchst.
host, port = ("db.internal", 5432)
print(f"Connect: {host}:{port}")Ausgabe:
Connect: db.internal:5432Die beiden Tupel-Elemente werden in der Reihenfolge den beiden Namen zugewiesen.
front = "blue"
back = "orange"
front, back = back, front
print(f"Front: {front}, back: {back}")Ausgabe:
Front: orange, back: blueBeide alten Werte werden erfasst, bevor sich einer der Namen ändert.
measurements = [10, 12, 14, 16, 20]
first, *middle, last = measurements
print(first)
print(middle)
print(last)Ausgabe:
10
[12, 14, 16]
20Das Ziel mit Sternchen erhält immer eine Liste, auch wenn sie keine Werte enthält.
checks = [("lint", True), ("tests", False)]
for number, (name, passed) in enumerate(checks, start=1):
print(f"{number}. {name}: {passed}")Ausgabe:
1. lint: True
2. tests: FalseDas äußere Paar enthält (number, record); das innere Paar zerlegt den Datensatz in (name, passed).
| Ziel | Python |
|---|---|
| Zwei Einträge entpacken | left, right = pair |
| Namen vertauschen | left, right = right, left |
| Mittlere Einträge erfassen | first, *middle, last = values |
| Jedes Paar entpacken | for key, value in pairs: |
| Paare nummerieren und entpacken | for n, (key, value) in enumerate(pairs, 1): |
ValueError aus.enumerate(pairs) gibt (index, pair) zurück, nicht drei einzelne Werte.