Heim > Backend-Entwicklung > Python-Tutorial > Wie kopiert man eine Liste in Python richtig tief?

Wie kopiert man eine Liste in Python richtig tief?

Patricia Arquette
Freigeben: 2025-01-04 02:55:38
Original
673 Leute haben es durchsucht

How to Properly Deep Copy a List in Python?

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]]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage