python 賦值 深淺拷貝的區別

2022-06-24 05:51:07 字數 976 閱讀 2975

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

一般有三種方法,

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

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

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

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

>>> import copy

>>> d=copy.deepcopy(alist)

>>> print alist;print d

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

[1, 2, 3, ['a', 'b']]始終沒有改變

python賦值與深淺拷貝

參考文章 在python中,物件的賦值就是簡單的物件引用,這點和c 不同。如下 a 1 2,3 hello python c b a for i in range len a print id a i id b i all true print a b true這種情況下,b和a是一樣的,他們指向同...

Python賦值與深淺拷貝

a 1,2,3 b a a 4,5,6 賦新的值給 a a 4,5,6 b 1,2,3 a 的值改變後,b 並沒有隨著 a 變 a 1,2,3 b a a 0 a 1 a 2 4,5,6 改變原來 list 中的元素 a 4,5,6 b 4,5,6 a 的值改變後,b 隨著 a 變了 上面兩段 中,...

python易誤點 賦值 深淺拷貝

str aaa str1 strprint str is str1 str bbb print str1 output true aaastr str1說明,str和str1指向同乙個位址,那麼為什麼str改變了值之後,str1沒有跟著變化呢?因為對於string這類的不可變物件,可變物件有list...