0
python中的copy.copy和copy.deepcopy函數有什麼不同?在python中複製函數
>>> copy.deepcopy(li)
[1, 2, 3, 4]
>>> copy.copy(li)
[1, 2, 3, 4]
都做同樣的事情,誰能告訴一下這些功能不明確
python中的copy.copy和copy.deepcopy函數有什麼不同?在python中複製函數
>>> copy.deepcopy(li)
[1, 2, 3, 4]
>>> copy.copy(li)
[1, 2, 3, 4]
都做同樣的事情,誰能告訴一下這些功能不明確
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)
將有原來的名單上沒有任何影響。
>>> 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]]
http://docs.python.org/2/library/copy.html –