“浅复制”表示字典的内容不是按值复制,而只是创建一个新引用。
>>> a = {1: [1,2,3]}>>> b = a.copy()>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})>>> a[1].append(4)>>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
相反,深拷贝将按值复制所有内容。
>>> import copy>>> c = copy.deepcopy(a)>>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})>>> a[1].append(5)>>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
所以:
b = a
:参考分配,制造a并b指向同一对象。
‘a = b’的图示:’a’和’b’都指向’{1:L}’,’L’指向’[1、2、3]。
b = a.copy()
:浅拷贝,a并且b将成为两个独立的对象,但其内容仍共享相同的参考
‘b = a.copy()’的图示:’a’指向’{1:L}’,’b’指向’{1:M}’,’L’和’M’都指向’[ 1,2,3]”。
b = copy.deepcopy(a)
:深度复制,a并且b的结构和内容变得完全孤立。
‘b = copy.deepcopy(a)’的图示:’a’指向’{1:L}’,’L’指向’[1、2、3]’; ‘b’指向’{1:M}’,’M’指向’[1,2,3]’的另一个实例。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)