Tuple-Methoden
Lerne die eingebauten Tuple-Methoden count() und index() in Python mit praktischen Beispielen, Sonderfällen und Tipps für unveränderliche Sequenzen.
Ein Python Tuple ist eine geordnete, unveränderliche Sequenz. Da Tuples nach der Erstellung nicht mehr geändert werden können, bieten sie nur zwei eingebaute Methoden: count() und index(). Diese Seite behandelt beide Methoden ausführlich, einschließlich ihrer optionalen Parameter, häufiger Stolperfallen und der eingebauten Funktionen (len(), min(), max(), sum(), sorted()), die auch mit Tuples hervorragend funktionieren.
Wenn du neu bei Tuples bist, lies zuerst Python Tuples. Für den Zugriff auf Elemente per Position oder Slice, siehe Access Tuples.
Kurzübersicht
| Methode / Funktion | Was sie zurückgibt |
|---|---|
t.count(x) | Anzahl der Vorkommen von x im Tuple |
t.index(x) | Index des ersten Vorkommens von x |
t.index(x, start) | Erstes Vorkommen von x ab Position start |
t.index(x, start, stop) | Erstes Vorkommen von x innerhalb von t[start:stop] |
len(t) | Gesamtanzahl der Elemente |
min(t) / max(t) | Kleinstes / größtes Element |
sum(t) | Summe aller Elemente (nur Zahlen) |
sorted(t) | Gibt eine neue Liste mit sortierten Elementen zurück |
Warum so wenige Methoden?
Listen haben über ein Dutzend Methoden, weil sie veränderlich sind — man kann Elemente anhängen, entfernen, an Ort und Stelle sortieren und so weiter. Tuples sind unveränderlich: Einmal erstellt, können ihre Elemente weder hinzugefügt, entfernt noch neu angeordnet werden. Daher sind die einzigen Operationen, die als Instanzmethoden sinnvoll sind, die lesenden: Vorkommen zählen und Positionen finden.
Die count()-Methode
tuple.count(value) durchsucht das gesamte Tuple und gibt zurück, wie oft value vorkommt. Wird der Wert nicht gefunden, gibt sie 0 zurück — es wird niemals ein Fehler ausgelöst.
count() mit verschachtelten Tuples
count() verwendet Gleichheit (==) zum Vergleichen und funktioniert daher mit jedem Elementtyp, einschließlich verschachtelter Tuples:
points = ((0, 0), (1, 2), (0, 0), (3, 4))
print(points.count((0, 0))) # 2
print(points.count((1, 2))) # 1Stolperfalle: True und 1 sind gleich
Python behandelt True == 1 und False == 0, daher zählt count() sie austauschbar:
data = (1, True, 0, False, 1)
print(data.count(1)) # 3 (counts 1, True, 1)
print(data.count(True)) # 3 (same three elements)
print(data.count(0)) # 2 (counts 0 and False)Dies ist Pythons standardmäßiges Gleichheitsverhalten, keine Tuple-Eigenheit.
Die index()-Methode
tuple.index(value) gibt den Index des ersten Vorkommens von value zurück. Ist der Wert nicht vorhanden, wird ein ValueError ausgelöst.
Optionale Parameter start und stop
Die vollständige Signatur lautet tuple.index(value, start, stop). Du kannst den Suchbereich einschränken, um ein bereits bekanntes Vorkommen nicht erneut zu finden:
numbers = (10, 20, 30, 20, 40, 20)
# Find first occurrence of 20 starting at index 2
print(numbers.index(20, 2)) # 3
# Find 20 only within numbers[2:5] → (30, 20, 40)
print(numbers.index(20, 2, 5)) # 3Der stop-Index ist exklusiv, entsprechend den Python-Slice-Konventionen.
Umgang mit ValueError
Sichere index() immer ab, wenn der Wert möglicherweise nicht vorhanden ist:
animals = ("cat", "dog", "bird")
target = "fish"
if target in animals:
pos = animals.index(target)
print(f"Found {target!r} at index {pos}")
else:
print(f"{target!r} is not in the tuple")
# fish is not in the tupleAlternativ kann ein try / except-Block verwendet werden:
try:
pos = animals.index("fish")
except ValueError:
pos = -1 # sentinel value when not found
print(pos) # -1Eingebaute Funktionen, die mit Tuples funktionieren
Obwohl die folgenden Funktionen keine Tuple-Methoden sind, akzeptieren sie jedes iterable Objekt — einschließlich Tuples — und werden häufig mit ihnen verwendet.
len()
Gibt die Gesamtanzahl der Elemente zurück:
min() und max()
Geben das kleinste und größte Element zurück. Die Elemente müssen vergleichbar sein (alle Zahlen oder alle Strings):
scores = (72, 95, 88, 61, 100)
print(min(scores)) # 61
print(max(scores)) # 100sum()
Gibt die arithmetische Summe eines numerischen Tuples zurück:
prices = (9.99, 4.49, 14.99)
print(sum(prices)) # 29.47
print(sum(prices, 5.00)) # 34.47 — optional start valuesorted()
Gibt eine neue Liste (kein Tuple) mit aufsteigend sortierten Elementen zurück. Das ursprüngliche Tuple bleibt unverändert:
letters = ("d", "a", "c", "b")
asc = sorted(letters) # ascending (default)
desc = sorted(letters, reverse=True) # descending
print(asc) # ['a', 'b', 'c', 'd']
print(desc) # ['d', 'c', 'b', 'a']
print(letters) # ('d', 'a', 'c', 'b') — unchangedUm ein sortiertes Tuple statt einer Liste zu erhalten, wrapp das Ergebnis in tuple():
sorted_tuple = tuple(sorted(letters))
print(sorted_tuple) # ('a', 'b', 'c', 'd')Häufige Tuple-Operationen (keine Methoden)
Auch wenn die folgenden Muster weder .count() noch .index() verwenden, begegnen sie einem häufig beim Arbeiten mit Tuples.
Verkettung
Verwende +, um zwei Tuples zu einem neuen zu verbinden:
Weitere Verknüpfungstechniken findest du unter Join Tuples.
Konvertierung eines Tuples in eine Liste (und zurück)
Da Tuples unveränderlich sind, konvertiere sie in eine list, wenn du den Inhalt ändern möchtest, und wandle sie danach zurück:
t = (1, 2, 3)
lst = list(t)
lst.append(4)
t2 = tuple(lst)
print(t2) # (1, 2, 3, 4)Eine vollständige Anleitung zu Mutationsmustern findest du unter Update Tuples.
Zugehörigkeit prüfen
Verwende in und not in anstatt index(), wenn du nur eine Ja/Nein-Antwort benötigst:
fruits = ("apple", "banana", "cherry")
print("banana" in fruits) # True
print("mango" not in fruits) # TrueDies ist lesbarer und vermeidet den ValueError, den index() bei fehlenden Werten auslöst.
Wahl zwischen count() und index()
| Ziel | Verwendung |
|---|---|
Wie oft kommt x vor? | t.count(x) |
Wo ist das erste x? | t.index(x) |
Existiert x überhaupt? | x in t |
Wo ist das zweite (oder n-te) x? | t.index(x, first_pos + 1) |
Verwandte Kapitel
- Python Tuples — Grundlagen und Erstellungssyntax von Tuples
- Access Tuples — Indizierung und Slicing
- Update Tuples — Workarounds für Unveränderlichkeit
- Unpack Tuples — Destrukturierungszuweisung
- Loop Tuples — Iteration mit
forundwhile - List Methods — Das veränderliche Gegenstück mit deutlich mehr Methoden