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