Python基礎(chǔ)詳解之列表復(fù)制
一、前言
Python中列表的復(fù)制分為幾種情況:
- 直接賦值
- 淺復(fù)制
- 深復(fù)制
下面通過實例分析一下這幾種情況的區(qū)別。
二、直接賦值
a = [11, 22, 33] b = a print(id(a), id(b)) b[0]=1 print(a,b)
輸出結(jié)果為如下所示,發(fā)現(xiàn)內(nèi)存地址沒有發(fā)生變化,b只是a的引用,通過b更改列表的值時,a同時做修改。
三、用切片賦值
a = [11, 22, 33] b = a[:] print(id(a), id(b)) b[0]=1 print(a,b)
輸出結(jié)果為如下所示,發(fā)現(xiàn)內(nèi)存地址發(fā)生了變化,通過b更改列表的值時,對a沒有任何的影響。
四、copy()復(fù)制實現(xiàn)賦值
a = [11, 22, 33] b = copy.copy(a) print(id(a), id(b)) b[0]=1 print(a,b)
輸出結(jié)果為如下所示,
發(fā)現(xiàn)內(nèi)存地址發(fā)生了變化,通過b更改列表的值時,對a沒有任何的影響。說明copy()復(fù)制的方式和切片的方式功能相同。
五、deepcopy()復(fù)制實現(xiàn)賦值
a = [11, 22, 33] b = copy.deepcopy(a) print(id(a), id(b)) b[0]=1 print(a,b)
輸出結(jié)果為如下所示,發(fā)現(xiàn)在該實例中,deepcopy()和copy()的方式?jīng)]有任何區(qū)別。
那么淺復(fù)制和深復(fù)制有什么區(qū)別呢?繼續(xù)看下面的實例測試。
六、copy()和deepcopy()的區(qū)別
6.1 copy()
a = [11, 22, 33, [1,2]] b = copy.copy(a) print(id(a), id(b)) b[3][0]=11 print(a,b)
運行結(jié)果:
6.2 deepcopy()
a = [11, 22, 33, [1,2]] b = copy.deepcopy(a) print(id(a), id(b)) b[3][0]=11 print(a,b)
運行結(jié)果:
通過上面的測試,發(fā)現(xiàn)當(dāng)列表a中的元素包含子列表時:
copy()方法為淺復(fù)制,沒有復(fù)制子對象,當(dāng)原始數(shù)據(jù)改變,子對象會改變;而deepcopy()方法包含對象里面的子對象的復(fù)制,當(dāng)原始對象改變,不會造成深復(fù)制里任何子元素的改變。
到此這篇關(guān)于Python基礎(chǔ)詳解之列表復(fù)制的文章就介紹到這了,更多相關(guān)python列表復(fù)制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python flashtext文本搜索和替換操作庫功能使用探索
本文將深入介紹Python flashtext庫,包括其基本用法、功能特性、示例代碼以及實際應(yīng)用場景,以幫助大家更好地利用這個有用的工具2024-01-01python圖像處理-利用一行代碼實現(xiàn)灰度圖摳圖
這篇文章主要介紹了python圖像處理-利用一行代碼實現(xiàn)灰度圖摳圖,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05pybaobabdt庫基于python的決策樹隨機森林可視化工具使用
這篇文章主要為大家介紹了pybaobabdt庫基于python的決策樹隨機森林可視化工具使用探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-02-02在Python中使用xlrd和xlwt讀寫Excel文件代碼實例
這篇文章主要介紹了在Python中使用xlrd和xlwt讀寫Excel文件代碼實例,python操作excel主要用到xlrd和xlwt兩個庫,即xlrd是讀excel,xlwt是寫excel庫,文中提供了部分實例代碼,需要的朋友可以參考下2023-08-08