python 的深淺拷貝

2021-08-28 08:51:09 字數 845 閱讀 7513

在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用

一般有三種方法,

alist=[1,2,3,["a","b"]]

(1)直接賦值,傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變

(2)copy淺拷貝,沒有拷貝子物件,所以原始資料改變,子物件會改變

>>> import copy

>>> c=copy.copy(alist)

>>> alist

[1, 2, 3, ['a', 'b']]

>>> c

[1, 2, 3, ['a', 'b']]

裡面的子物件被改變了

(3)深拷貝,包含物件裡面的自物件的拷貝,所以原始物件的改變不會造成深拷貝裡任何子元素的改變

>>> import copy

>>> d=copy.deepcopy(alist)

>>> alist

[1, 2, 3, ['a', 'b']]

>>> d

[1, 2, 3, ['a', 'b']]

始終沒有改變

始終沒有改變

始終沒有改變

python 深淺拷貝案例 python 深淺拷貝

深淺拷貝 對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址 import copy a1 22255 a2 22255 print id a1 id a2 3428240 3428240 對於字典 元祖 列表 而言,進行賦值 淺拷貝和深拷貝時,其記憶體位址的變化...

python 深淺拷貝

建立乙個寬度為3,高度為4的陣列 mylist 0 3 4 0,0,0 0,0,0 0,0,0 0,0,0 但是當操作mylist 0 1 1時,發現整個第二列都被賦值,變成 0,1,0 0,1,0 0,1,0 0,1,0 list n n shallow copies of list concat...

python深淺拷貝

python 深淺拷貝 shallow copy 和 deep copy 對於乙個列表,列表裡面可以再放入乙個列表 1 若想複製這乙個列表,使用列表的普通的copy 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....