1.浅copy: 外层添加元素时, 浅拷贝c不会随原列表a变化而变化;内层list添加元素时,浅拷贝c才会变化。2.深copy: 无论原列表a如何变化,深拷贝d都保持不变。3.赋值: 赋值对象随着原列表
1.浅copy: 外层添加元素时, 浅拷贝c不会随原列表a变化而变化;内层list添加元素时,浅拷贝c才会变化。 2.深copy: 无论原列表a如何变化,深拷贝d都保持不变。 3.赋值: 赋值对象随着原列表一起变化
深拷贝:只有一种形式,copy模块中的deepcopy函数。
和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。
深拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关联。
import copy a = [1,2,3,4,5,[‘a‘,‘b‘],6] b = a c =copy.copy(a) d = copy.deepcopy(a) a.append(7) print(a) #新增一个7 print(b) #新增一个7 print(c) #浅copy 不变 print(d) #深copy不变 print(‘~~~~~~‘) a[5].append(‘c‘) print(a) print(b) print(c) print(d)
/usr/local/bin/python3.7 "/code/赋值 浅copy 深copy.py"
[1, 2, 3, 4, 5, [‘a‘, ‘b‘], 6, 7]
[1, 2, 3, 4, 5, [‘a‘, ‘b‘], 6, 7]
[1, 2, 3, 4, 5, [‘a‘, ‘b‘], 6]
[1, 2, 3, 4, 5, [‘a‘, ‘b‘], 6]
~~~~~~
[1, 2, 3, 4, 5, [‘a‘, ‘b‘, ‘c‘], 6, 7]
[1, 2, 3, 4, 5, [‘a‘, ‘b‘, ‘c‘], 6, 7]
[1, 2, 3, 4, 5, [‘a‘, ‘b‘, ‘c‘], 6]
[1, 2, 3, 4, 5, [‘a‘, ‘b‘], 6]
Process finished with exit code 0