das flache Kopieren in Python -Wörterbüchern verstehen: Warum Aktualisierungen in Kopie nicht das Original beeinflussen
Wenn Sie mit Python -Wörterbüchern arbeiten, ist es wichtig, die Unterscheidung zwischen flachem und tiefem Kopieren zu 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. Dies bedeutet, dass das neue Wörterbuch Verweise auf dieselben Objekte enthält, die im ursprünglichen Wörterbuch gespeichert sind. Infolgedessen werden alle Änderungen an der Kopie auch im Original -Wörterbuch widerspiegelt.
Beispiel:
original = {'a': 1, 'b': 2} new = original.copy () new.update ({'c': 3}) print (original) # {'a': 1, 'b': 2} print (neu) # {'a': 1, 'c': 3, 'b': 2}
In diesem Beispiel erstellt die Methode dict.copy () ein neues Wörterbuch, das Referenzen 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 Kopie nicht das Original beeinflussenoriginal = {'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}
Der Grund, warum Updates in einer flachen Kopie nicht das Original enthält, ist, dass das Original nur Referenzen auf die Objekte referenziert. Wenn wir die Kopie aktualisieren, ändern wir nicht die tatsächlichen Objekte, sondern nur die Referenzen.
Dies steht im Gegensatz zu einer Liste, in der eine flache Kopie einen Verweis auf die Liste selbst und nicht die Elemente innerhalb enthält. Wenn wir die Kopie einer Liste aktualisieren, aktualisieren wir die Elemente in der Liste, die sowohl die Kopie als auch das Original betreffen.
tiefes Kopieren mit Copy.deepcopy ()
, um eine Kopie eines Dictionary -Dictionary zu erstellen. Diese Funktion kopiert alle Objekte im Wörterbuch rekursiv und erstellt eine neue Struktur mit unterschiedlichen Referenzen.
Beispiel:
Kopie importieren original = {'a': 1, 'b': 2} new = copy.deepcopy (original) new.update ({'c': 3}) print (original) # {'a': 1, 'b': 2} print (neu) # {'a': 1, 'c': 3, 'b': 2}
In diesem Beispiel erstellt die Funktion copy.deepcopy () ein neues Wörterbuch, das Kopien der Objekte im ursprünglichen Wörterbuch enthält. Wenn wir die Kopie aktualisieren, bleibt das ursprüngliche Wörterbuch nicht betroffen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3