Wie kann man eine Liste klonen oder kopieren?
Welche Möglichkeiten gibt es, eine Liste in Python zu klonen oder zu kopieren?
Wenn ich neue_liste = meine_liste
verwende, ändert jede Änderung an neue_liste
jedes Mal meine_liste
.
Warum ist das so?
2262
3
Mit
neue_liste = meine_liste
haben Sie eigentlich keine zwei Listen. Die Zuweisung kopiert nur den Verweis auf die Liste, nicht die eigentliche Liste, so dass sowohlneue_liste
als auchmeine_liste
nach der Zuweisung auf dieselbe Liste verweisen.Um die Liste tatsächlich zu kopieren, haben Sie verschiedene Möglichkeiten:
Sie können die eingebaute Methode
list.copy()
verwenden (verfügbar seit Python 3.3):Sie können sie zerschneiden:
Die Meinung von Alex Martelli (zumindest [damals 2007][2]) dazu ist, dass es eine seltsame Syntax ist und es keinen Sinn macht, sie jemals zu verwenden. ;) (Seiner Meinung nach ist die nächste Variante besser lesbar).
Sie können die eingebaute Funktion
list()
verwenden:Sie können die generische Funktion
copy.copy()
verwenden:Dies ist ein wenig langsamer als
list()
, weil es zuerst den Datentyp vonold_list
herausfinden muss.Wenn die Liste Objekte enthält und Sie diese ebenfalls kopieren wollen, verwenden Sie die generische
copy.deepcopy()
:Offensichtlich die langsamste und speicherintensivste Methode, aber manchmal unvermeidbar.
Beispiel:
Ergebnis:
Verwenden Sie
thing[:]
Pythons Idiom für diesen Vorgang ist
neueListe = alteListe[:]
.