1.直接赋值
直接赋值只是传对象的引用而已,相当于两个变量同时指向一个地方,所以不论这两个变量哪一个改变,他们同时指向的地方都会改变。
list_1 = [1,2,3,[4,5]]
list_2 = list_1
print(list_1,list_2)
# 对list_2的内容赋值
list_2[0] = 0
print(list_1,list_2)

2.浅拷贝 copy()
当使用浅拷贝时,只是拷贝了最外围的对象本身,嵌套的内部元素都只是拷贝了一个引用而已。所以外围元素可以独立改变,内部元素其中一个赋值就会引起全部改变。
from copy import copy
list_1 = [1,2,3,[4,5]]
list_2 = copy(list_1)
print('初始情况 : ',list_1,list_2)
# 改变外围因素例如list_2中的1、2、3 发现list_1没有改变
list_2[0] = 0
print('改变外围因素:',list_1,list_2)
# 改变内部因素例如list2中的[4,5] 发现list_1改变了 因为内部元素浅拷贝只是传引用
list_2[3][0] = 0
print('改变内部因素:',list_1,list_2)
3.深拷贝 deepcopy()
对外围和内部元素都进行了拷贝对象本身,而不是对象的引用。简而言之,全部复制,相互独立,一套带走……
from copy import deepcopy
list_1 = [1,2,3,[4,5]]
list_2 = deepcopy(list_1)
print('初始情况 : ',list_1 ,list_2)
# 改变外围因素 发现list_1没有改变
list_2[0] = 0
print('改变外围因素:',list_1,list_2)
# 改变内部因素 发现list_1没有改变
list_2[3][0] = 0
print('改变内部因素:',list_1,list_2)
总的来说,赋值就是传引用,一个改变就都改变。浅拷贝顾名思义拷贝得不彻底,一些嵌套的内部元素其中一个改变也会都改变。深拷贝厉害了,完全拷贝,相互对立,一切安好,互不干扰。