天天看點

Python--指派與深淺拷貝

指派

指派:就是給對象起一個别名

info = [1,2,3,4,5]
b = a  #a 與b 指向的是同一個對象,當改變b的值時會對a産生影響,當改變a的值時也會對b産生影響
           
Python--指派與深淺拷貝

淺拷貝

淺拷貝使用函數:copy 顧名思義就是拷貝的不夠徹底,淺嘗辄止

會拷貝出一個父清單的新位址對象。對于父清單,不是同一個對象,裡面的子清單指向的還是是同一對象

import  copy
alist = [10,20,30,[100,200]]
blist = copy.copy(alist)
blist.append(8)
blist[3].append(300)#兩個都會修改
print('alist--->',alist)
print('blist--->',blist)
輸出:
alist---> [10, 20, 30, [100, 200, 300]]
blist---> [10, 20, 30, [100, 200, 300], 8]
           
Python--指派與深淺拷貝

深拷貝

深拷貝:deepcopy 顧名思義就是拷貝徹底了,會拷貝出一個外層清單的新位址的對象,子清單也是獨立的,不是同一個對象

import copy
alist = [10,20,30,[100,200]]
blist = copy.deepcopy(alist)
blist.append(40)
blist[-2].append(300)
print('alist--->',alist)
print('blist--->',blist)
輸出
alist---> [10, 20, 30, [100, 200]]
blist---> [10, 20, 30, [100, 200, 300], 40]
           
Python--指派與深淺拷貝

總結

深淺拷貝和直接指派:總結就是是否獨立出新的對象

直接指派:不會獨立出新的對象

淺拷貝:獨立的不完全,隻是獨立出父清單,子清單不獨立

深拷貝:完全獨立,父清單和子清單都是獨立的