python中的copy.copy和copy.deepcopy函數之間有什么區別?>>> copy.deepcopy(li)[1, 2, 3, 4]>>> copy.copy(li)[1, 2, 3, 4]兩者都做同樣的事情,誰能告訴他們這些功能具體是做什么的
2 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
>>> import copy
>>> L = [[1,2,3]]
>>> A = copy.copy(L)
>>> A[0].append(4)
>>> A
[[1, 2, 3, 4]]
>>> L
[[1, 2, 3, 4]]
>>> L = [[1,2,3]]
>>> A = copy.deepcopy(L)
>>> A[0].append(4)
>>> A
[[1, 2, 3, 4]]
>>> L
[[1, 2, 3]]

智慧大石
TA貢獻1946條經驗 獲得超3個贊
copy.copy與copy.deepcopy執行深層復制相反,執行淺層復制。
在考慮時:
li = [1, 2, 3, 4]
您不會注意到任何區別,因為您正在復制不可變的對象,但是請考慮:
>>> import copy
>>> x = copy.copy(li)
>>> x
[[1, 2], [3, 4]]
>>> x[0][0] = 9
>>> li
[[9, 2], [3, 4]]
由于淺表副本僅復制列表中每個引用的副本,因此操作這些復制的引用仍會影響原始列表。
但是下面的代碼:
>>> x.append(1)
將不會對原始列表產生影響。
添加回答
舉報
0/150
提交
取消