Der Unterschied zwischen Python Deep Copy und Flat Copy

In Python ist die Objektzuweisung tatsächlich eine Referenz auf ein Objekt. Wenn Sie ein Objekt erstellen und dann einer anderen Variablen zuweisen, kopiert Python das Objekt nicht, sondern nur den Verweis auf das Objekt

Es gibt im Allgemeinen drei Methoden:

alist =[1,2,3,["a","b"]]

 

(1) Direkte Zuweisung, die standardmäßige flache Kopie überträgt die Referenz des Objekts, die ursprüngliche Liste ändert sich, das zugewiesene b nimmt dieselbe Änderung vor

>>> b = alist
>>> drucke b
[1, 2, 3, ['a', 'b']]
>>> alist.append (5)
>>> drucke alist; drucke b
[1, 2, 3, ['a', 'b'], 5]
[1, 2, 3, ['a', 'b'], 5]

(2) Kopieren Sie eine flache Kopie. Es werden keine Unterobjekte kopiert, sodass sich die Originaldaten ändern und sich die Unterobjekte ändern

>>> Kopie importieren

>>> c = copy.copy (alist)
>>> print alist; print c
[1, 2, 3, ['a', 'b']]
[1, 2, 3, ['a', 'b ']]
>>> alist.append (5)
>>> print alist; print c
[1, 2, 3, [' a ',' b '], 5]
[1, 2, 3, [' a ' , 'b']]

>>> alist [3]
['a', 'b']
>>> alist [3] .append ('cccc')
>>> print alist; print c
[1, 2, 3, ['a', 'b', 'cccc'], 5]
[1, 2, 3, ['a', 'b', 'cccc']] Die untergeordneten Objekte im Inneren wurden geändert

 

 

(3) Deep Copy, einschließlich der Kopie des Selbstobjekts im Objekt, sodass durch die Änderung des Originalobjekts keine Unterelemente in der Deep Copy geändert werden

>>> Kopie importieren

>>> d = copy.deepcopy (alist)
>>> print alist; print d
[1, 2, 3, ['a', 'b']]
[1, 2, 3, ['a', 'b ']] nie geändert
>>> alist.append (5)
>>> print alist; print d
[1, 2, 3, [' a ',' b '], 5]
[1, 2, 3, [' a ',' b ']] nie geändert
>>> alist [3]
[' a ',' b ']
>>> alist [3] .append ("ccccc")
>>> print alist; print d
[1 , 2, 3, ['a', 'b', 'ccccc'], 5]
[1, 2, 3, ['a', 'b']] bleibt unverändert

 

 / **************************************************** ********************************************************** *************** /

Ich habe schon einmal eine Interviewfrage gesehen, was sehr interessant ist. Der Ausgabetest gibt wahr oder falsch zurück

Untersuchungspunkte: 1. Der Unterschied zwischen einer tiefen und einer flachen Kopie der unveränderlichen ursprünglichen Gruppe und der Variablenliste

         

 

 

 

Ich denke du magst

Origin blog.csdn.net/sichuanpb/article/details/114961504
Empfohlen
Rangfolge