Junior — Middle
Worin besteht der Unterschied zwischen einer tiefen und einer flachen Kopie von Objekten in Python, und wann sollte man sie verwenden?
sobes.tech KI
Antwort von AI
In Python erstellt eine flache Kopie (shallow copy) ein neues Objekt, aber die verschachtelten Objekte darin werden nicht kopiert, sondern nur referenziert. Eine tiefe Kopie (deep copy) erstellt ein neues Objekt und kopiert rekursiv alle verschachtelten Objekte, wodurch eine vollständig unabhängige Struktur entsteht.
Wann verwenden:
- Flache Kopie ist geeignet, wenn die verschachtelten Objekte sich nicht ändern oder wenn Änderungen an den verschachtelten Objekten in beiden Kopien reflektiert werden sollen.
- Tiefe Kopie ist notwendig, wenn eine vollständig unabhängige Kopie des Objekts mit allen verschachtelten Elementen benötigt wird, sodass Änderungen in der Kopie das Original nicht beeinflussen.
Beispiel:
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[0][0] = 100
print(original) # [[100, 2], [3, 4]] - Original wurde geändert
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - Original wurde nicht geändert
Daher hängt die Wahl zwischen flacher und tiefer Kopie von den Anforderungen an die Unabhängigkeit der Kopie ab.