a = [1,[2,3]]
b = a
引用只是單純的指向物件的位址,並不會對b物件開闢額外的空間當a發生變化時,b也發生變化,不產生額外空間
以下幾種與淺複製等價
- 切片操作 b=a[:]
- 工廠函式 b=list(a)
- copy函式 b=copy.copy(a)
import copy
a = [1,[2,3]] #1不可變物件,[2,3]是可變物件
b = copy.copy(a)
淺複製的時候,b物件開闢了額外的空間,當a不發生變化時,此時b物件的元素位址仍與a相同;當a的不可變物件的元素發生變化時,將會開闢新的空間,此時a該元素的改變不影響b,當a的可變物件的元素發生變化時,a和b可變物件的元素位址仍然相同。
import
copy
a = [1,[2
,3]]
b = copy.deepcopy(a)
淺複製的時候,b物件開闢了額外的空間,當a不發生變化時,此時b物件的元素位址仍與a相同;當a發生變化時,不管a變化的是可變物件還是不可變物件的元素,a都會開闢新的空間,且都不影響b。 Python 深淺複製
python中的賦值語句不複製物件,它們在目標和物件之間建立繫結。對於可變的或包含可變項的容器,有時需要乙個副本,所以可以改變乙個副本而不改變另乙個。將建立乙個新物件,但它包含的是對原始物件包含的項的引用。a b list a c a.copy d copy.copy a 建立乙個新物件,並且遞迴的...
python深淺複製 Python中的深淺拷貝
1.什麼是深淺拷貝?python中一切皆物件,python中的數字 字串 元組等,如果存放在了記憶體中,這部分記憶體裡面的內容是不會改變的,但是也有情況,記憶體中存放了可變物件,比如說列表和字典,他們的記憶體空間是可以被修改的。下面我們定義乙個列表 list 1,2,3,4,5 list1 list...
Python中的深淺複製
最近遇到了乙個問題,在python中對於物件的複製有兩種,copy 以及deepcopy 為了研究他們之間的區別,寫下如下部落格。首先檢視python的官方文件,得到如下解釋 淺層複製和深層複製之間的區別僅與復合物件 即包含其他物件的物件,如列表或類的例項 相關 乙個 淺層複製 會構造乙個新的復合物...