對Python中列表和數(shù)組的賦值,淺拷貝和深拷貝的實例講解
對Python中列表和數(shù)組的賦值,淺拷貝和深拷貝的實例講解
列表賦值:
>>> a = [1, 2, 3] >>> b = a >>> print b [1, 2, 3] >>> a[0] = 0 >>> print b [0, 2, 3]
解釋:[1, 2, 3]被視作一個對象,a,b均為這個對象的引用,因此,改變a[0],b也隨之改變
如果希望b不改變,可以用到切片
>>> b = a[:] >>> a[0] = 0 >>> print b [1, 2, 3]
解釋,切片a[:]會產(chǎn)生一個新的對象,占用一塊新的內(nèi)存,b指向這個新的內(nèi)存區(qū)域,因此改變a所指向的對象的值,不會影響b
列表深拷貝和淺拷貝
淺拷貝
>>> import copy >>> a = [1, 2, 3, [5, 6]] >>> b = copy.copy(a) >>> print b [1, 2, 3, [5, 6]] >>> a[3].append('c') >>> print b [1, 2, 3, [5, 6, 'c']]
深拷貝
>>> a = [1, 2, 3, [5, 6]] >>> b = copy.deepcopy(a) >>> a[3].append('c') >>> print b [1, 2, 3, [5, 6]]
拷貝即是開辟一塊新的內(nèi)存空間,把被拷貝對象中的值復(fù)制過去。而淺拷貝并沒有為子對象[5,6]開辟一塊新的內(nèi)存空間,而僅僅是實現(xiàn)對a中[5,6]的引用。所以改變a中[5,6]的值,b中的值也會發(fā)生變化。
深拷貝則是為子對象也開辟了一塊新空間。所以改變a中[5, 6]的值,并不影響b
數(shù)組賦值不能用切片來達到相同的目的
>>> import numpy as np >>> a = np.array([1, 2 ,3]) >>> b = a[:] >>> a[0] = 5 >>> print a, b [5 2 3] [5 2 3]
如上,雖然用切片,但不能達到修改a而不影響b的目的。說明a,b仍然指向同一塊內(nèi)存。
此時,只能用拷貝
>>> b = a.copy() >>> a[0] = 5 >>> print a, b [5 2 3] [1 2 3]
此時修改a不會影響到b。其中的原因以后進一步深究。
注意,列表的拷貝是copy.copy(obj)或copy.deepcopy(obj),數(shù)組的拷貝是obj.copy()
以上這篇對Python中列表和數(shù)組的賦值,淺拷貝和深拷貝的實例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python3常用的數(shù)據(jù)清洗方法(小結(jié))
這篇文章主要介紹了python3常用的數(shù)據(jù)清洗方法(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10利用python將圖片轉(zhuǎn)換成excel文檔格式
編寫了一小段Python代碼,將圖片轉(zhuǎn)為了Excel,純屬娛樂,下面這篇文章主要給大家介紹了關(guān)于利用python將圖片轉(zhuǎn)換成excel文檔格式的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-12-12Python利用pandas進行數(shù)據(jù)合并詳解
當(dāng)使用Python中的pandas庫時,merge函數(shù)是用于合并(或連接)兩個數(shù)據(jù)框(DataFrame)的重要工具。它類似于SQL中的JOIN操作,下面我們就來看看它的具體操作吧2023-11-11Python利用PIL實現(xiàn)多張圖片合成gif動畫的案例詳解
這篇文章主要介紹了Python利用PIL實現(xiàn)多張圖片合成gif動畫的案例,文章通過代碼示例介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以自己動手試一下2023-11-11基于Python實現(xiàn)下載網(wǎng)易音樂代碼實例
這篇文章主要介紹了基于Python實現(xiàn)下載網(wǎng)易音樂代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08Django2.1.7 查詢數(shù)據(jù)返回json格式的實現(xiàn)
這篇文章主要介紹了Django2.1.7 查詢數(shù)據(jù)返回json格式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12