Python浅复制与深复制

  • 方法返回一个新字典,其包含的键值对与原来的字典相同(浅复制)
x = {'username':'admin','machines':['foo','bar','baz']
y=x.copy()
y['username'] = 'mlh'
y['machines'].remove('bar')

此时y为{‘username’:’mlh’,’machines’:[‘foo’,’baz’]}
x为{‘username’:’admin’,’machines’:[‘foo’,’baz’]

当替换副本中的值时,原件不受影响。然而,如果修改副本中的值(就地修改而不是替换),原件也将发生变化,因为原件指向的也是被修改的值。

  • 为了避免这个问题,一种办法是执行深复制,即同时复制值以及包含的所有值。可使用模块copy中的函数deepcopy
from copy import deepcopy
d = {}
d['names'] =['Alfred','Bertrand']
c = d.copy()
dc = deepcopy(d)
d['name'].append('Clive')

c的值
{‘names’:[‘Alfed’,’Brrtrand’,’Clive’]}
dc的值
{‘names’:[‘Alfred’,’Bertrand’]

猜你喜欢

转载自blog.csdn.net/u012300744/article/details/80182442