Kopieren Sie die Liste in Python

Einführung

Das Ergebnis der Ausführung mit Python 3.8.3.

Kopie der Liste

Manchmal möchte ich eine Kopie der Liste erstellen, die Werte ändern und sie mit dem Original vergleichen. In diesem Fall müssen Sie mit der Deepcopy-Methode des Kopiermoduls wie folgt schreiben.

1-dimensionale Liste

Wenn die Liste eindimensional ist, können Sie sie mit "deepcopy ()", Slice, "list ()" usw. kopieren.

list_copy_example_1.py


import copy
list_1 = [0,1,2]
list_2 = copy.deepcopy(list_1) #deepcopy()verwenden
list_3 = list_1[:] #Schneiden Sie die ursprüngliche Liste
list_4 = list(list_1) #list()verwenden

list_2[0] = 1000
list_3[0] = 2000
list_4[0] = 3000
print(list_1)
print(list_2)
print(list_3)
print(list_4)

Die Ausgabe sieht so aus.

[0, 1, 2]
[1000, 1, 2]
[2000, 1, 2]
[3000, 1, 2]

2D-Liste

Wenn die Liste zweidimensional (oder höher) ist, können Sie sie mit "deepcopy ()" kopieren. Slicing und list () funktionieren nicht (siehe unten).

list_copy_example_2.py


import copy
list_1 = [[0,1,2], [3,4,5]]
list_2 = copy.deepcopy(list_1)

list_2[0][0] = 1000
print(list_1)
print(list_2)

Die Ausgabe sieht so aus.

[[0, 1, 2], [3, 4, 5]]
[[1000, 1, 2], [3, 4, 5]]

Muster, die nicht funktionieren

Ersetzen Sie mit =

Da der Verweis auf die Liste selbst kopiert wird, wird auch der Wert der ursprünglichen Liste geändert.

anti_pattern_1.py


#=Ersetzen Sie mit
list_1 = [0,1,2,3]
list_2 = list_1

list_2[0] = 1000
print(list_1)
print(list_2)

Ausgabe

[1000, 1, 2, 3]
[1000, 1, 2, 3]

In Scheiben schneiden, mit Liste kopieren ()

Die Geschichte, eine Kopie einer Python-Liste ohne Referenzübergabe zu erstellen besagt, dass es einfach ist, in Slices zu kopieren, aber dies ist eine ** Liste Nur in einer Dimension ** Funktioniert gut.

Wenn die Liste mehr als zwei Dimensionen hat, sieht sie folgendermaßen aus: Es scheint nicht zu funktionieren, da unterwegs eine Referenzübergabe erfolgt.

anti_pattern_2


#Kopieren Sie die ursprüngliche Liste in Scheiben(2D)
list_3 = [[0,1,2], [3,4,5]]
list_4 = list_3[:]

list_4[0][0] = 1000
print(list_3)
print(list_4)

Ausgabe

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

Sie können das gleiche Ergebnis auch erzielen, indem Sie die Methode list () verwenden, anstatt zu schneiden.

Kommentar

Wenn Sie eine Liste normal duplizieren, wird die Referenz selbst kopiert, nicht der Wert. Dies wird als ** flache Kopie ** bezeichnet. Umgekehrt wird das Kopieren nur des Werts als ** Deep Copy ** bezeichnet. In Python wird eine flache Kopie auf komplexe Objekte wie Listen und Wörterbücher angewendet, sofern nicht anders angegeben. Der Grund, warum die mehrdimensionale Liste beim Kopieren in Slices als Referenz übergeben wurde, liegt wahrscheinlich darin, dass die Kopie der zweiten Dimension innerhalb des Slice eine flache Kopie war. Und die copy.deepcopy () Methode ist eine Anweisung zum "Erstellen einer tiefen Kopie". Damit wird sogar eine Kopie einer mehrdimensionalen Liste eine tiefe Kopie jedes Elements erstellen. Weitere Informationen finden Sie im offiziellen Kopieren --- Flachkopieren und Tiefkopieren.

Zusammenfassung

Slice für 1D-Liste, list (), copy.deepcopy () Copy.deepcopy () für mehrdimensionale Listen

Recommended Posts

Kopieren Sie die Liste in Python
Zeigen Sie eine Liste der Alphabete in Python 3 an
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Holen Sie sich den Aufrufer einer Funktion in Python
Machen Sie mit Python eine Joyplot-ähnliche Handlung von R.
Ausgabe in Form eines Python-Arrays
Erstellen Sie ein Lesezeichen in Python
[Python] Kopie einer mehrdimensionalen Liste
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Gruppieren Sie nach aufeinanderfolgenden Elementen einer Liste in Python
Ein Memorandum über die Umsetzung von Empfehlungen in Python
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
[Python] Verwalten Sie Funktionen in einer Liste
Python / Machen Sie ein Diktat aus einer Liste.
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Informationen zur Grundlagenliste der Python-Grundlagen
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Stellen Sie sicher, dass alle Elemente in der Liste in Python identisch sind
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
Kopie von Python
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Überprüfen Sie das Verhalten des Zerstörers in Python
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Erstellen Sie ein Beziehungsdiagramm von Python-Modulen
Ändern Sie die Liste in der for-Anweisung
Führen Sie den Python-Interpreter im Skript aus
Das Ergebnis der Installation von Python auf Anaconda
[Python] Ruft eine Liste der Instanzvariablen ab
[Python] [Meta] Ist der Python-Typ ein Typ?
Grundlagen zum Ausführen von NoxPlayer in Python
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Auf der Suche nach dem schnellsten FizzBuzz in Python
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Die Geschichte der Verarbeitung A von Blackjack (Python)
Ruft die EDINET-Codeliste in Python ab
[Python] Nur eine Liste der Ordner abrufen
So bestimmen Sie die Existenz eines Selenelements in Python
Versuchen Sie, die Thread-Liste der Nachrichten (Abneigung) mit Python zu erhalten.
So überprüfen Sie die Speichergröße einer Variablen in Python
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Ruft eine Liste der Dateien in einem Ordner mit Python ohne Pfad ab
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Eine Geschichte, die ich machen wollte, als ich eine Liste von Lernsitzungen mit Python bekam
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)
Sortierte Liste in Python
Erstellen Sie eine Liste der "Hobunsha 70th Anniversary Campaign" mit Selen in Amazon