Ich verstehe die Unterschiede zwischen flachen Kopie und tiefe Kopie, wie ich in der Klasse gelernt habe. in einer tiefen Kopie jedoch nicht die folgenden nicht SinnKopieren und Deepcopy in Python3
import copy
a = [1, 2, 3, 4, 5]
b = copy.deepcopy(a)
print(a is b)
print(a[0] is b[0])
----------------------------
~Output~
>False
>True
----------------------------
machen Sollte nicht print(a[0] is b[0])
auf False zu bewerten, da die Objekte und deren Bestandteile an einem anderen Speicherort neu erstellt werden? Ich habe das gerade getestet, da wir das im Unterricht besprochen hatten, aber es scheint nicht zu funktionieren.
Ist nicht das, was Sie beschreiben die Principal von "seichten Kopien" dh copy.copy (a), wenn copy.deepcopy (a), sollten die Elemente alle in verschiedenen Speicherorten, dh diese ID (a [0]) ! = id (b [0]) –
@GeraldLee: Dies ist ein spezieller Fall, in dem die 'kleinen' Ganzzahlen ('<257') am Speicherort fixiert werden, um häufige Operationen zu beschleunigen. Versuchen Sie Folgendes: 'a, b = (Liste (Bereich (258)), Liste (Bereich (258))); [id (a [i]) == id (b [i]) für i in Bereich (258)] 'in einer Python-REPL – Steen
Kleine Ints sind Beispiele für Python-Singletons. Andere sind 'None',' True' und 'False' – PMende