Flache Kopie
Eine flache Kopie erstellt ein neues zusammengesetztes Objekt und fügt dann (soweit möglich) Verweise auf die im Original gefundenen Objekte ein.
Wir haben drei verschiedene Möglichkeiten, eine flache Kopie zu erstellen:
Hier enthalten alle obigen Listen die gleichen Werte wie die ursprüngliche Liste:
>>> print(nums == m1 == m2 == m3)
True
Die Speicheradresse jedes einzelnen ist jedoch unterschiedlich.,
Dies bedeutet, dass jedes Listenobjekt diesmal eine eigene, unabhängige Speicheradresse hat.
Jetzt gehen wir zum interessanteren Teil über. Wenn die ursprüngliche Liste ein zusammengesetztes Objekt ist (z. B. eine Liste von Listen), verweisen neue Listenelemente nach einer flachen Kopie immer noch auf die ursprünglichen Elemente.
Wenn Sie also die veränderbaren Elemente wie Listen ändern, werden die Änderungen an den ursprünglichen Elementen reflektiert., Schauen wir uns das folgende Beispiel an, um ein besseres Verständnis zu erhalten:
Wie Sie im obigen Beispiel sehen, werden die internen Listenelemente in der neuen Liste auch in der ursprünglichen Liste aktualisiert, da a
und b
zeigt immer noch auf dieselbe Speicheradresse (ursprüngliche Liste).
Die neue Liste b
hat also eine eigene Speicheradresse, ihre Elemente jedoch nicht., Dies liegt daran, dass in flacher Kopie, anstatt die Elemente der Liste in das neue Objekt zu kopieren, einfach die Verweise auf ihre Speicheradressen kopiert werden.
Deshalb, während wir Änderungen am ursprünglichen Objekt vornehmen, wird es in den kopierten Objekten reflektiert und umgekehrt.
Dies ist ein Merkmal einer flachen Kopie.