使用内置函数:copy(浅拷贝)、deepcopy(深拷贝)。
拷贝:新开辟一段空间用来存储新的对象。而深浅拷贝的区别在于:
浅拷贝: 不拷贝子对象的内容,只是拷贝子对象的引用。
深拷贝: 会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象。
import copy
a = [1,2,3,4]
b = ['a','b',a]
c = b[:] #相当于 c = copy.copy(b)
d = copy.deepcopy(b)
print(b,'\t',c,'\t',d)
b.append('c')
b[2].append("abc")
print(b,'\t',c,'\t',d)
print("c是不是b的浅拷贝:",b[2] is c[2])
print("c是不是b的深拷贝:",b[2] is d[2])
print(id(b[2]),'\t',id(c[2]),'\t',id(d[2]))
结果演示:
['a', 'b', [1, 2, 3, 4]] ['a', 'b', [1, 2, 3, 4]] ['a', 'b', [1, 2, 3, 4]]
['a', 'b', [1, 2, 3, 4, 'abc'], 'c'] ['a', 'b', [1, 2, 3, 4, 'abc']] ['a', 'b', [1, 2, 3, 4]]
c是不是b的浅拷贝: True
c是不是b的深拷贝: False
1877574659976 1877574659976 1877604567560