W3docs

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 / FunktionWas 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.

python— editable, runs on the server

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

Stolperfalle: 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.

python— editable, runs on the server

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

Der 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 tuple

Alternativ kann ein try / except-Block verwendet werden:

try:
    pos = animals.index("fish")
except ValueError:
    pos = -1  # sentinel value when not found

print(pos)  # -1

Eingebaute 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:

python— editable, runs on the server

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

sum()

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 value

sorted()

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')  — unchanged

Um 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:

python— editable, runs on the server

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

Dies ist lesbarer und vermeidet den ValueError, den index() bei fehlenden Werten auslöst.

Wahl zwischen count() und index()

ZielVerwendung
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

Übungen

Übung
Which of the following are methods applicable to Python tuples?
Which of the following are methods applicable to Python tuples?
Was this page helpful?