Erklärung zur Lektion
Nach dieser Lektion kannst du:
Tupel fassen wie Listen geordnete Werte zusammen, können aber nicht an Ort und Stelle geändert werden. Klammern machen Tupel-Literale lesbar; erst das Komma erzeugt ein Tupel. Deshalb braucht ein Tupel mit einem Element ein abschließendes Komma: ("eu",).
Indizes funktionieren wie bei Listen: Der erste Wert steht bei Index 0, und -1 liest den letzten. Wenn du weißt, wie viele Felder ein Datensatz enthält, weist das Entpacken sie alle auf einmal zu: name, region = record. Python löst ValueError aus, wenn die Anzahl der Ziele nicht zur Anzahl der Werte passt.
Mit Entpacken lassen sich außerdem zwei Variablen ohne separate temporäre Variable vertauschen. Anders als bei einer Liste löst record[0] = value einen TypeError aus: Erstelle ein neues Tupel, wenn du einen geänderten Datensatz brauchst.
Die Tupel-Indizierung verwendet dieselben positiven und negativen Positionen wie die Listen-Indizierung.
endpoint = ("billing", "eu", 443)
print(endpoint[0])
print(endpoint[-1])Ausgabe:
billing
443Klammern allein gruppieren nur einen Ausdruck; ein Komma kennzeichnet ein Tupel mit einem Element.
region = ("apac",)
print(type(region).__name__)
print(len(region))Ausgabe:
tuple
1Das Entpacken macht die Felder klar erkennbar, ohne wiederholte Indexausdrücke.
host = ("gateway", 8080, True)
service, port, online = host
print(f"{service}:{port} online={online}")Ausgabe:
gateway:8080 online=TruePython packt die Werte auf der rechten Seite zusammen und weist sie den Zielen auf der linken Seite zu.
primary = "east"
backup = "west"
primary, backup = backup, primary
print(f"Primary: {primary}")
print(f"Backup: {backup}")Ausgabe:
Primary: west
Backup: east| Ziel | Python |
|---|---|
| Einen Datensatz erstellen | ("api", "eu") |
| Ein Tupel mit einem Element erstellen | ("api",) |
| Ein Element lesen | record[0] oder record[-1] |
| Felder entpacken | service, region = record |
| Werte vertauschen | a, b = b, a |
| Ein unveränderliches Tupel ersetzen | Ein neues Tupel erstellen |
("eu") ist ein String, kein Tupel mit einem Element.ValueError aus.record[1] = "us" löst TypeError aus.