直接赋值 | 浅拷贝 | 深拷贝 | |
定义 | 默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变 | 浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变 | 深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变 |
赋值 | alist=[1,2,3,["a","b"]] b=alist | alist=[1,2,3,["a","b"]] import copy c=copy.copy(alist) | alist=[1,2,3,["a","b"]] import copy d=copy.deepcopy(alist) |
操作Ⅰ | alist.append(5) print b | alist.append(5) print c | alist.append(5) print d |
结果Ⅰ | [1, 2, 3, ['a', 'b'], 5] | [1, 2, 3, ['a', 'b']] | [1, 2, 3, ['a', 'b']] |
操作Ⅱ | alist[3].append('cccc') print b | alist[3].append('cccc') print c | alist[3].append('cccc') print d |
结果Ⅱ | [1, 2, 3, ['a', 'b', 'cccc'], 5] | [1, 2, 3, ['a', 'b', 'cccc']] #子对象被改变了 | [1, 2, 3, ['a', 'b']] |