EMZETT.
Login

Kurz: Ein Tupel (tuple) ist wie eine Liste, aber unveränderlich. Es steht in runden Klammern.

Teil des Kurses Python

Kapitel 17 von 44 im Kurs Python. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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))

Ausgabe:

(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"))

Ausgabe:

a d
('b', 'c')
4
True
2 1

Ändern geht nicht:

t = (1, 2, 3)
t[0] = 99

Fehlermeldung:

Traceback (most recent call last):
  File "beispiel.py", line 2, in <module>
    t[0] = 99
TypeError: 'tuple' object does not support item assignment

Entpacken

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)

Ausgabe:

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]))

Ausgabe:

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")])

Ausgabe:

289

Tupel und Listen umwandeln

print(tuple([1, 2, 3]))
print(list((1, 2, 3)))

Ausgabe:

(1, 2, 3)
[1, 2, 3]

Hinweis

Enthält ein Tupel veränderliche Elemente (zum Beispiel eine Liste), kann sich deren Inhalt trotzdem ändern. Nur die Zuordnung der Positionen ist fest.

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

Übungsaufgabe

Schreibe eine Funktion, die für zwei Zahlen Summe und Produkt als Tupel zurückgibt, und entpacke das Ergebnis in zwei Variablen.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: List Comprehensions

Weiter: Mengen (Sets)

Alle Kapitel: Python im Überblick