python中的淺拷貝與深拷貝
- 淺拷貝僅僅複製了容器中元素的地址
>>> L = [1, 2, 3]
>>> M = ['X', L, 'Y']
>>> M
['x', [1, 2, 3], 'L']
>>> L.append(5)
>>> M
['x', [1, 2, 3, 5], 'L']
我們可以看到L的變化會引起M跟着變化,這說明賦值給M的並不是L中的元素的值,而是L中元素的地址,其實可以把地址打印出來,一定是這樣。
- 深拷貝是真正的複製元素的值給一個新的變量,下面是兩種深拷貝的方法
調用包
>>> from copy import deepcopy
>>> A = [1, 2, 3]
>>> B = deepcopy(A)
>>> B.append(4)
>>> A
[1, 2, 3]
>>> B
[1, 2, 3, 4]
通過切片
>>> A = [1, 2, 3]
>>> B = A[:]
>>> B.append(4)
>>> A
[1, 2, 3]
>>> B
[1, 2, 3, 4]