W3docs

Tuples in Python aktualisieren

Alle Techniken zum Aktualisieren von Python-Tuples: Listenkonvertierung, Verkettung, Slicing, Werte ersetzen, Elemente hinzufügen und entfernen.

Python-Tuples sind unveränderliche Sequenzen — einmal erstellt, kann ihre Struktur nicht mehr verändert werden. Elemente können nicht direkt hinzugefügt, entfernt oder neu zugewiesen werden. Dennoch lässt sich aus einem bestehenden Tuple stets ein neues, verändertes Tuple erzeugen. Diese Seite erklärt alle praktischen Techniken: Konvertierung in eine Liste, Verkettung, Slicing, Ersetzen aller Vorkommen eines Werts und mehr. Außerdem wird die eine wichtige Besonderheit erläutert — veränderliche Objekte, die innerhalb eines Tuples verschachtelt sind.

Warum Tuples unveränderlich sind

Die Unveränderlichkeitsgarantie von Python ist beabsichtigt. Tuples können genau deshalb als Dictionary-Schlüssel oder Mitglieder von Sets verwendet werden, weil sich ihre Identität niemals ändert. Der Versuch, ein Tuple direkt zu ändern, löst einen TypeError aus:

Der Versuch einer direkten Zuweisung löst TypeError aus

t = (1, 2, 3, 4, 5)
t[2] = 6  # TypeError: 'tuple' object does not support item assignment

Alle nachfolgenden Techniken erstellen ein brandneues Tuple, anstatt das ursprüngliche zu verändern.

Konvertierung in eine Liste

Der lesbarste Ansatz für komplexe Änderungen: in eine Liste konvertieren, alle Bearbeitungen vornehmen und dann zurück konvertieren.

Ein Tuple in eine Liste konvertieren, aktualisieren und zurückkonvertieren

python— editable, runs on the server

Ausgabe:

(1, 2, 6, 4, 5)

Verwende diesen Ansatz, wenn du mehrere Änderungen auf einmal vornehmen musst — zum Beispiel Sortieren, Filtern oder eine Transformation auf alle Elemente anwenden — da Listen alle Mutationsoperationen unterstützen.

Einen Wert durch Slicing und Verkettung ersetzen

Um ein einzelnes Element auszutauschen, kannst du das Tuple um den Zielindex herum aufteilen und den neuen Wert verketten. Keine Listenkonvertierung erforderlich.

Ein Element durch Slice + Verkettung ersetzen

t = (1, 2, 3, 4, 5)

# Replace the element at index 2 (value 3) with 6
t = t[:2] + (6,) + t[3:]

print(t)

Ausgabe:

(1, 2, 6, 4, 5)

Der Slice t[:2] ergibt (1, 2), das Literal (6,) ist der Ersatz (beachte das abschließende Komma — es macht es zu einem Tuple), und t[3:] ergibt (4, 5). Die Verkettung fügt alle drei zu einem neuen Tuple zusammen.

Alle Vorkommen eines Werts ersetzen

Verwende einen Generator-Ausdruck innerhalb von tuple(), um jedes Vorkommen eines Werts durch einen anderen zu ersetzen.

Alle Vorkommen eines Werts in einem Tuple ersetzen

t = (1, 2, 2, 3, 2)

# Replace every 2 with 5
t = tuple(5 if x == 2 else x for x in t)

print(t)

Ausgabe:

(1, 5, 5, 3, 5)

Dies ist kompakter als der Listenkonvertierungsansatz, wenn das einzige Ziel eine Wertersetzung ist.

Elemente hinzufügen

Am Ende anfügen

Verwende den +-Operator, um Elemente anzufügen. Die rechte Seite muss ebenfalls ein Tuple sein — daher das abschließende Komma in (4,).

Ein Element an ein Tuple anfügen

t = (1, 2, 3)
t = t + (4,)
print(t)

Ausgabe:

(1, 2, 3, 4)

Die erweiterte Zuweisungsschreibweise += funktioniert auf dieselbe Weise:

+= verwenden, um ein Tuple zu erweitern

t = (1, 2, 3)
t += (4, 5)
print(t)

Ausgabe:

(1, 2, 3, 4, 5)

Hinweis: += verändert das ursprüngliche Tuple-Objekt nicht — Python bindet den Variablennamen an ein neu erstelltes Tuple. Wenn eine andere Variable noch auf das Original verweist, bleibt dieses unverändert.

Am Anfang voranstellen

Ein Element einem Tuple voranstellen

t = (1, 2, 3)
t = (0,) + t
print(t)

Ausgabe:

(0, 1, 2, 3)

In der Mitte einfügen

Es gibt keine direkte insert()-Methode für Tuples. Kombiniere zwei Slices um die gewünschte Position:

Ein Element an einer bestimmten Position einfügen

t = (1, 2, 4, 5)

# Insert 3 at index 2
t = t[:2] + (3,) + t[2:]

print(t)

Ausgabe:

(1, 2, 3, 4, 5)

Elemente entfernen

Nach Index entfernen

Schneide um den Index, den du entfernen möchtest, herum:

Das Element an Index 2 entfernen

t = (1, 2, 3, 4, 5)

# Remove the element at index 2 (value 3)
t = t[:2] + t[3:]

print(t)

Ausgabe:

(1, 2, 4, 5)

Nach Wert entfernen

Verwende einen Generator-Ausdruck, um übereinstimmende Werte herauszufiltern:

Alle Vorkommen eines bestimmten Werts entfernen

t = ('apple', 'banana', 'cherry', 'banana')

t = tuple(x for x in t if x != 'banana')

print(t)

Ausgabe:

('apple', 'cherry')

Damit werden alle Vorkommen des Werts in einem Durchlauf entfernt. Wenn du nur das erste Vorkommen entfernen möchtest, konvertiere in eine Liste, rufe .remove() auf und konvertiere zurück.

Tuple-Entpacken verwenden

Das Entpacken eines Tuples in benannte Variablen ermöglicht es, es mit geänderten Positionen neu aufzubauen. Dies ist am nützlichsten, wenn das Tuple klein ist und du die Bestandteile zur besseren Übersichtlichkeit umbenennen möchtest.

Ein Tuple durch Entpacken und Neuzuweisung bestimmter Variablen neu aufbauen

t = (1, 2, 3, 4, 5)
a, b, c, d, e = t

# Replace the third element
t = (a, b, 6, d, e)

print(t)

Ausgabe:

(1, 2, 6, 4, 5)

Vermeide diesen Ansatz bei großen Tuples — du musst eine Variable pro Element schreiben, was ausführlich und fehleranfällig ist.

Besonderheit: Veränderliche Objekte innerhalb eines Tuples

Die Unveränderlichkeit eines Tuples gilt nur für die Referenzen, die es enthält, nicht für die Objekte, auf die diese Referenzen zeigen. Wenn ein Tuple ein veränderliches Objekt enthält — beispielsweise eine Liste — kannst du die Liste ändern, und die Änderung ist über das Tuple sichtbar.

Eine Liste innerhalb eines Tuples ändern

t = ([1, 2], [3, 4])

# The tuple itself is immutable, but its elements (lists) are not
t[0].append(5)

print(t)

Ausgabe:

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

Das Tuple enthält noch immer dieselben zwei Listen-Referenzen — das ist unveränderlich. Aber das Listen-Objekt, auf das t[0] zeigt, wurde verändert. Dies ist eine häufige Quelle der Verwirrung, wenn Tuples als Dictionary-Schlüssel verwendet werden; nur vollständig unveränderliche Tuples (die keine Listen, Dicts oder andere veränderliche Objekte enthalten) sind hashbar.

Den richtigen Ansatz wählen

ZielEmpfohlene Technik
Ein Element nach Index ändernSlicing + Verkettung
Alle Vorkommen eines Werts ersetzenGenerator-Ausdruck innerhalb von tuple()
Mehrere Änderungen auf einmalIn Liste konvertieren, bearbeiten, zurückkonvertieren
Elemente am Ende hinzufügenOperator + oder +=
Ein Element nach Index entfernenUm den Index herum schneiden
Ein Element nach Wert entfernenGenerator-Ausdruck mit if-Bedingung
Kleines, positionell klares TupleIn benannte Variablen entpacken und neu aufbauen

Weitere Informationen zur Arbeit mit Tuples findest du unter Access Tuples, Unpack Tuples, Loop Tuples und Tuple Methods.

Übungen

Übung
Welche der folgenden Aussagen über das Aktualisieren von Tuples in Python ist korrekt?
Welche der folgenden Aussagen über das Aktualisieren von Tuples in Python ist korrekt?
Was this page helpful?