將一個列表的數據復制到另一個列表中。
使用列表[:],可以調用copy模塊
import copy A = [21,22,23,24,['a','b','c','d'],25,26] B = A #直接賦值 C = A[:] #淺拷貝 D = copy.copy(A) #淺拷貝 E = copy.deepcopy(A) #深拷貝 #看看深拷貝與淺拷貝的區別 #在A數組的最尾處加一個數 A.append(99) #在A數組里面的數組最尾處加一個數 A[4].append(66) print("起始列表A------------>",A) print("直接把A列表賦值給B---->",B) print("直接淺拷貝A列表給C---->",C) print("直接淺拷貝A列表給D---->",D) print("直接深拷貝A列表給E---->",E)
運行結果如下:
起始列表A------------> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26, 99]
直接把A列表賦值給B----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26, 99]
直接淺拷貝A列表給C----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26]
直接淺拷貝A列表給D----> [21, 22, 23, 24, ['a', 'b', 'c', 'd', 66], 25, 26]
直接深拷貝A列表給E----> [21, 22, 23, 24, ['a', 'b', 'c', 'd'], 25, 26]
通過以上的例子我們來分析一下這幾種復制列表的不同
1、直接賦值,其實就是默認淺拷貝傳遞對象的引用而已,原始列表改變,被賦值的B也會做相同的改變
2、淺拷貝,沒有拷貝子對象,所以原始數據改變,子對象也會改變
3、深拷貝,包含對象里面的子對象的拷貝,所以原始對象的改變不會造成深拷貝里任何子元素的改變