Warum wirkt sich die Aktualisierung einer flachen Kopie eines Python-Wörterbuchs nicht auf das Original aus?

Linda Hamilton
Freigeben: 2024-11-23 22:43:12
Original
757 Leute haben es durchsucht

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

Flaches Kopieren in Python-Wörterbüchern verstehen: Warum Aktualisierungen in der Kopie keine Auswirkungen auf das Original haben

Bei der Arbeit mit Python-Wörterbüchern ist es wichtig, Folgendes zu beachten den Unterschied zwischen flachem und tiefem Kopieren verstehen. Eine flache Kopie erstellt ein neues Wörterbuch, das Verweise auf dieselben Objekte wie das ursprüngliche Wörterbuch enthält, während eine tiefe Kopie ein neues Wörterbuch mit Kopien der Objekte erstellt.

Flaches Kopieren mit dict.copy()

Die Methode dict.copy() führt eine flache Kopie eines Wörterbuchs durch. Das bedeutet, dass das neue Wörterbuch Verweise auf dieselben Objekte enthält, die im ursprünglichen Wörterbuch gespeichert sind. Dadurch werden alle an der Kopie vorgenommenen Änderungen auch im Originalwörterbuch widergespiegelt.

Beispiel:

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

print(original)  # {'a': 1, 'b': 2}
print(new)  # {'a': 1, 'c': 3, 'b': 2}
Nach dem Login kopieren

In diesem Beispiel das dict.copy ()-Methode erstellt ein neues Wörterbuch, new, das Verweise auf dieselben Objekte wie das ursprüngliche Wörterbuch enthält. Wenn wir die Kopie mit {'c': 3} aktualisieren, spiegeln sowohl das Original als auch die Kopie diese Änderung wider.

Warum Aktualisierungen in der Kopie sich nicht auf das Original auswirken

Der Grund, warum Aktualisierungen in einer flachen Kopie keine Auswirkungen auf das Original haben, liegt darin, dass die Kopie nur Verweise auf die Objekte enthält. Wenn wir die Kopie aktualisieren, ändern wir nicht die tatsächlichen Objekte, sondern nur die Referenzen.

Dies steht im Gegensatz zu einer Liste, bei der eine flache Kopie eine Referenz auf die Liste selbst und nicht auf die darin enthaltenen Elemente enthält. Wenn wir die Kopie einer Liste aktualisieren, aktualisieren wir auch die Elemente in der Liste, was sich sowohl auf die Kopie als auch auf das Original auswirkt.

Deep Copying mit copy.deepcopy()

Um eine Kopie eines Wörterbuchs zu erstellen, die vollständig vom Original isoliert ist, können wir die Funktion copy.deepcopy() verwenden. Diese Funktion kopiert alle Objekte im Wörterbuch rekursiv und erstellt so eine neue Struktur mit eindeutigen Referenzen.

Beispiel:

import copy

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

print(original)  # {'a': 1, 'b': 2}
print(new)  # {'a': 1, 'c': 3, 'b': 2}
Nach dem Login kopieren

In diesem Beispiel ist copy.deepcopy( )-Funktion erstellt ein neues Wörterbuch, new, das Kopien der Objekte im ursprünglichen Wörterbuch enthält. Wenn wir die Kopie aktualisieren, bleibt das Originalwörterbuch davon unberührt.

Das obige ist der detaillierte Inhalt vonWarum wirkt sich die Aktualisierung einer flachen Kopie eines Python-Wörterbuchs nicht auf das Original aus?. 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