HOWTO · Python

Tupel in Liste umwandeln in Python

Dieses Tutorial zeigt, wie man Tupel in Listen umwandelt

Auf dieser Seite

Um ein Tupel in Python in eine Liste zu konvertieren, übergeben Sie das Tupel an den Konstruktor list(): list(my_tuple). Tupel sind unveränderlich und Listen sind veränderlich. Die Konvertierung ist also der Weg, eine änderbare Version der Daten eines Tupels zu erhalten, wenn Sie Elemente hinzufügen, entfernen oder neu anordnen müssen. Die Konvertierung erstellt eine neue äußere Liste; die Elemente selbst werden nicht konvertiert, und ihre Reihenfolge und Werte bleiben exakt erhalten. Dieser Artikel zeigt die direkte Konvertierung, die Entpack-Form und die zwei üblichen Wege, verschachtelte Tupel zu konvertieren, deren innere Tupel einen zusätzlichen Schritt benötigen.

Ein Tupel mit list() in eine Liste konvertieren

Der Konstruktor list() akzeptiert jedes Iterable und baut aus seinen Elementen eine neue Liste. Er funktioniert für Tupel mit beliebigem Inhalt, auch für Tupel mit gemischten Typen:

mixed_tuple = ('apple', 42, 3.14, True)
my_list = list(mixed_tuple)
print(my_list)

Ausgabe:

['apple', 42, 3.14, True]

Nur der Container ändert sich. Der String, die Ganzzahl, die Gleitkommazahl und der Boolean in der neuen Liste sind dieselben Objekte wie zuvor, in derselben Reihenfolge; an ihnen wird nichts konvertiert. Wenn Sie my_list später ändern, bleibt das ursprüngliche Tupel unberührt, weil die Liste ein separates Objekt ist. Für ein flaches Tupel ist dieser eine Aufruf die vollständige Antwort und die Methode der ersten Wahl.

Ein Tupel durch Entpacken in eine Liste konvertieren

Sie können die Liste auch erstellen, indem Sie das Tupel mit dem Operator * in einer Listenanzeige entpacken:

my_tuple = (1, 2, 3, 4, 5)
my_list = [*my_tuple]
print(my_list)

Ausgabe:

[1, 2, 3, 4, 5]

Der Ausdruck [*my_tuple] entpackt die Elemente des Tupels in eine neue Liste. Diese Form beruht auf dem verallgemeinerten Entpacken (PEP 448) und ist daher in Python 3.5 und höher verfügbar; unter Python 2 oder Python 3.4 und früher funktioniert sie nicht. Das Entpacken ist am nützlichsten, wenn die neue Liste mehrere Sequenzen auf einmal kombiniert, zum Beispiel [*first, *second], wo list() allein einen zusätzlichen Verkettungsschritt bräuchte. Für eine einfache Konvertierung eines einzelnen Tupels erzeugt es exakt dieselbe Liste wie list().

Verschachtelte Tupel mit einer List Comprehension konvertieren

Ein einfacher Aufruf von list() konvertiert nur den äußeren Container. Enthält das Tupel weitere Tupel, bleiben die inneren Tupel:

nested = ((1, 2), (3, 4), (5, 6))
print(list(nested))

Ausgabe:

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

Um auch jedes innere Tupel zu konvertieren, wenden Sie list() mit einer List Comprehension auf jede Zeile an:

nested = ((1, 2), (3, 4), (5, 6))
converted = [list(row) for row in nested]
print(converted)

Ausgabe:

[[1, 2], [3, 4], [5, 6]]

Jedes row ist ein inneres Tupel, und list(row) macht daraus eine Liste, sodass das Ergebnis eine Liste von Listen ist. Dasselbe Muster lässt sich auf tiefere Verschachtelung erweitern, indem Sie es auf jeder Ebene anwenden, die Sie ändern müssen.

Verschachtelte Tupel mit map() konvertieren

Die Funktion map() erreicht dasselbe Ergebnis, indem sie list auf jedes Element des äußeren Tupels anwendet. Da map() einen Iterator zurückgibt, verpacken Sie ihn in list(), um die endgültige Liste zu erstellen:

nested = ((1, 2), (3, 4), (5, 6))
converted = list(map(list, nested))
print(converted)

Ausgabe:

[[1, 2], [3, 4], [5, 6]]

map(list, nested) ruft list einmal pro innerem Tupel auf, genau das, was die Comprehension im vorherigen Abschnitt ausschreibt. Wählen Sie die Form, die sich in Ihrem Code besser liest: Die Comprehension zeigt die Operation pro Element ausdrücklich, während map() kompakt ist, wenn die Konvertierung eine einzelne vorhandene Funktion ist. Beide lassen das ursprüngliche verschachtelte Tupel unverändert und geben eine neue Liste von Listen zurück.