Wie kopiert man eine Liste tief?
Beim Versuch, eine tiefe Kopie einer Liste zu erstellen, ist es wichtig, die Verwendung der Liste zu vermeiden( ) Konstruktor. Während list() den Anschein erweckt, als würde es eine eindeutige Liste generieren, führt es nur eine oberflächliche Kopie durch und behält Verweise auf die Elemente der ursprünglichen Liste bei. Folglich wirken sich alle an der neuen Liste vorgenommenen Änderungen auch auf das Original aus.
Lösung: Deep Copy mit copy.deepcopy()
Für echtes Deep Copy die Kopie Die Funktion .deepcopy() muss verwendet werden. Diese Funktion klont alle Elemente innerhalb der Liste rekursiv und stellt so sicher, dass die neue Liste unabhängig vom Original ist.
Beispiel:
import copy # Original list E0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # Shallow copy E0_copy1 = list(E0) # Deep copy E0_copy2 = copy.deepcopy(E0) # Modify shallow copy E0_copy1[0][0] = 0 # Observe that changes to the shallow copy also affect the original print(E0) # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]] # Modify deep copy E0_copy2[1][1] = 0 # Note that changes to the deep copy do not affect the original print(E0) # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]
Erklärung:
list() initialisiert eine neue Liste durch Verweis auf die ursprünglichen Elemente. Daher werden alle an der Kopie vorgenommenen Änderungen auf die Originalliste übertragen.
copy.deepcopy() hingegen erstellt Kopien aller verschachtelten Elemente innerhalb der Liste, was zu einer völlig unabhängigen Kopie führt. Änderungen an der Deep Copy haben keinen Einfluss auf die Originalliste.
Das obige ist der detaillierte Inhalt vonWie kopiert man eine Liste in Python richtig tief?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!