Python基礎(chǔ)詳解之列表復(fù)制
一、前言
Python中列表的復(fù)制分為幾種情況:
- 直接賦值
- 淺復(fù)制
- 深復(fù)制
下面通過(guò)實(shí)例分析一下這幾種情況的區(qū)別。
二、直接賦值
a = [11, 22, 33] b = a print(id(a), id(b)) b[0]=1 print(a,b)
輸出結(jié)果為如下所示,發(fā)現(xiàn)內(nèi)存地址沒(méi)有發(fā)生變化,b只是a的引用,通過(guò)b更改列表的值時(shí),a同時(shí)做修改。
三、用切片賦值
a = [11, 22, 33] b = a[:] print(id(a), id(b)) b[0]=1 print(a,b)
輸出結(jié)果為如下所示,發(fā)現(xiàn)內(nèi)存地址發(fā)生了變化,通過(guò)b更改列表的值時(shí),對(duì)a沒(méi)有任何的影響。
四、copy()復(fù)制實(shí)現(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ā)生了變化,通過(guò)b更改列表的值時(shí),對(duì)a沒(méi)有任何的影響。說(shuō)明copy()復(fù)制的方式和切片的方式功能相同。
五、deepcopy()復(fù)制實(shí)現(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)在該實(shí)例中,deepcopy()和copy()的方式?jīng)]有任何區(qū)別。
那么淺復(fù)制和深復(fù)制有什么區(qū)別呢?繼續(xù)看下面的實(shí)例測(cè)試。
六、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)
運(yùn)行結(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)
運(yùn)行結(jié)果:
通過(guò)上面的測(cè)試,發(fā)現(xiàn)當(dāng)列表a中的元素包含子列表時(shí):
copy()方法為淺復(fù)制,沒(méi)有復(fù)制子對(duì)象,當(dāng)原始數(shù)據(jù)改變,子對(duì)象會(huì)改變;而deepcopy()方法包含對(duì)象里面的子對(duì)象的復(fù)制,當(dāng)原始對(duì)象改變,不會(huì)造成深復(fù)制里任何子元素的改變。
到此這篇關(guān)于Python基礎(chǔ)詳解之列表復(fù)制的文章就介紹到這了,更多相關(guān)python列表復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python函數(shù)高級(jí)(命名空間、作用域、裝飾器)
這篇文章介紹了Python函數(shù)的高級(jí)用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Python flashtext文本搜索和替換操作庫(kù)功能使用探索
本文將深入介紹Python flashtext庫(kù),包括其基本用法、功能特性、示例代碼以及實(shí)際應(yīng)用場(chǎng)景,以幫助大家更好地利用這個(gè)有用的工具2024-01-01python圖像處理-利用一行代碼實(shí)現(xiàn)灰度圖摳圖
這篇文章主要介紹了python圖像處理-利用一行代碼實(shí)現(xiàn)灰度圖摳圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05pybaobabdt庫(kù)基于python的決策樹(shù)隨機(jī)森林可視化工具使用
這篇文章主要為大家介紹了pybaobabdt庫(kù)基于python的決策樹(shù)隨機(jī)森林可視化工具使用探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02在Python中使用xlrd和xlwt讀寫(xiě)Excel文件代碼實(shí)例
這篇文章主要介紹了在Python中使用xlrd和xlwt讀寫(xiě)Excel文件代碼實(shí)例,python操作excel主要用到xlrd和xlwt兩個(gè)庫(kù),即xlrd是讀excel,xlwt是寫(xiě)excel庫(kù),文中提供了部分實(shí)例代碼,需要的朋友可以參考下2023-08-08Python基于Tkinter編寫(xiě)crc校驗(yàn)工具
這篇文章主要介紹了Python基于Tkinter編寫(xiě)crc校驗(yàn)工具,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05基于Python編寫(xiě)一個(gè)有趣的年會(huì)抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫(xiě)一個(gè)簡(jiǎn)易的抽獎(jiǎng)系統(tǒng),順便幫助大家鞏固一下對(duì)Python語(yǔ)法和框架的理解,感興趣的小伙伴可以了解下2023-12-12