浅拷贝:直接赋值
- 传递对象的引用,引用相同的list,所有会相互改变。
alist = [1,2,3,['a','b']]
b = alist
alist.append(5)
b
b.append(6)
alist
浅拷贝:copy
- 拷贝非可变子对象(元素)原始数据改变,非可变子对象不会被改变。
- 没有拷贝可变子对象(列表中的列表),所以原始数据改变,子对象会改变。
alist = [1,2,3,['a','b']]
c = alist.copy()
alist.append(7)
c
alist[3].append('cccc')
c
深拷贝:deepcopy
- 包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变。
import copy
alist = [1,2,3,['a','b']]
d=copy.deepcopy(alist)
alist.append(5)
print(d)
alist[3].append('cccc')
print(d)