Heim  >  Artikel  >  Backend-Entwicklung  >  Warum ändert die Aktualisierung einer flachen Kopie eines Python-Wörterbuchs nicht das Original?

Warum ändert die Aktualisierung einer flachen Kopie eines Python-Wörterbuchs nicht das Original?

Linda Hamilton
Linda HamiltonOriginal
2024-11-24 06:37:10630Durchsuche

Why Doesn't Updating a Shallow Copy of a Python Dictionary Change the Original?

Warum das Shallow Copy Dictionary das Original nicht aktualisiert

Beim Umgang mit Datenstrukturen ist das Verständnis der Nuancen des Kopierens von entscheidender Bedeutung. Python bietet zwei primäre Kopiermethoden: flaches und tiefes Kopieren. Dieser Artikel befasst sich mit den Unterschieden dieser Techniken und untersucht insbesondere, warum das Aktualisieren einer flachen Kopie keine Auswirkungen auf das Originalwörterbuch hat.

Pythons flache Kopie

dict.copy() Führt eine flache Kopie eines Wörterbuchs durch, d. h. es erstellt einen neuen Verweis auf denselben Inhalt. Die Inhalte werden nicht nach Wert dupliziert, sondern teilen sich stattdessen die gleiche Speicherreferenz.

Betrachten Sie das Beispiel:

original = dict(a=1, b=2)
new = original.copy()
new.update({'c': 3})

Nach der flachen Kopie werden alle an der neuen Referenz (neu) vorgenommenen Änderungen vorgenommen Ändern Sie das ursprüngliche Wörterbuch (Original), da sie auf dieselben zugrunde liegenden Daten verweisen. Im Beispiel wird durch das Hinzufügen von „c“:3 zur flachen Kopie auch das Originalwörterbuch aktualisiert.

Deep Copy vs. Shallow Copy verstehen

Wo flaches Kopieren nur erstellt Durch neue Verweise auf vorhandene Daten werden durch Deep Copying völlig neue Objekte erstellt. Die Inhalte werden rekursiv dupliziert. Dadurch wird sichergestellt, dass an der neuen Referenz vorgenommene Änderungen keine Auswirkungen auf das Original haben.

Mit copy.deepcopy() wird eine tiefe Kopie durchgeführt. In diesem Fall haben alle an der neuen Referenz (c) vorgenommenen Änderungen keine Auswirkungen auf das ursprüngliche Wörterbuch (a).

Fazit

Flaches Kopieren in Python erfordert die Erstellung eines neuen Wörterbuchs Verweise auf vorhandene Daten, während durch tiefes Kopieren völlig neue Objekte mit dupliziertem Inhalt erstellt werden. Das Verständnis dieser Unterscheidung ist beim Umgang mit komplexen Datenstrukturen von entscheidender Bedeutung, da sie bestimmt, wie sich Änderungen an einem Objekt auf die anderen auswirken.

Das obige ist der detaillierte Inhalt vonWarum ändert die Aktualisierung einer flachen Kopie eines Python-Wörterbuchs nicht das Original?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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