Ein Tupel (tuple) ist wie eine Liste, aber unveränderlich. Es steht in runden Klammern. Tupel eignen sich für Werte, die zusammengehören und sich nicht ändern sollen, zum Beispiel Koordinaten oder Rückgabewerte mit mehreren Teilen.
punkt = (3, 4)
farbe = ("rot", "grün", "blau")
einzeln = (42,) # ein Element braucht ein Komma!
leer = ()
print(punkt, type(punkt))
print(type((42)), type(einzeln))(3, 4) <class 'tuple'> <class 'int'> <class 'tuple'>
Die Klammern sind sogar oft optional: Das Komma macht das Tupel.
Zugriff wie bei Listen
t = ("a", "b", "c", "d")
print(t[0], t[-1])
print(t[1:3])
print(len(t))
print("b" in t)
print(t.index("c"), t.count("a"))a d
('b', 'c')
4
True
2 1Ändern geht nicht:
t = (1, 2, 3)
t[0] = 99Traceback (most recent call last):
File "beispiel.py", line 2, in <module>
t[0] = 99
TypeError: 'tuple' object does not support item assignmentEntpacken
Tupel (und Listen) lassen sich auf mehrere Variablen verteilen:
position = (10, 20, 30)
x, y, z = position
print(x, y, z)
name, *rest = ("Mia", 17, "Berlin")
print(name, rest)10 20 30 Mia [17, 'Berlin']
Das ist auch der Grund, warum der Tausch a, b = b, a funktioniert: Rechts entsteht ein Tupel, links wird es entpackt.
Funktionen mit mehreren Rückgabewerten
def min_max(werte):
return min(werte), max(werte) # ein Tupel
kleinster, groesster = min_max([4, 9, 1, 7])
print(kleinster, groesster)
print(min_max([4, 9, 1, 7]))1 9 (1, 9)
Tupel als Schlüssel und in Mengen
Weil Tupel unveränderlich sind, dürfen sie als Dictionary-Schlüssel dienen, Listen nicht:
entfernung = {("Berlin", "Hamburg"): 289, ("Berlin", "München"): 504}
print(entfernung[("Berlin", "Hamburg")])289
Tupel und Listen umwandeln
print(tuple([1, 2, 3]))
print(list((1, 2, 3)))(1, 2, 3) [1, 2, 3]
Merke
- Tupel:
(a, b, c), geordnet und unveränderlich - Ein Tupel mit einem Element braucht ein Komma:
(42,) - Entpacken:
x, y = punkt - Perfekt für feste Gruppen und mehrere Rückgabewerte
- Als Dictionary-Schlüssel erlaubt
Aufgabe
Schreibe eine Funktion, die für zwei Zahlen Summe und Produkt als Tupel zurückgibt, und entpacke das Ergebnis in zwei Variablen.