目錄
- 一、前言
- 二、直接賦值
- 三、用切片賦值
- 四、copy()復(fù)制實(shí)現(xiàn)賦值
- 五、deepcopy()復(fù)制實(shí)現(xiàn)賦值
- 六、copy()和deepcopy()的區(qū)別
一、前言
Python中列表的復(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)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python中必會(huì)的四大高級(jí)數(shù)據(jù)類型(字符,元組,列表,字典)
- Python列表刪除重復(fù)元素與圖像相似度判斷及刪除實(shí)例代碼
- Python 統(tǒng)計(jì)列表中重復(fù)元素的個(gè)數(shù)并返回其索引值的實(shí)現(xiàn)方法
- Python 把兩層列表展開平鋪成一層(5種實(shí)現(xiàn)方式)
- 淺談Python列表嵌套字典轉(zhuǎn)化的問(wèn)題
- Python隨機(jī)函數(shù)random隨機(jī)獲取數(shù)字、字符串、列表等使用詳解
- Python列表排序方法reverse、sort、sorted詳解
- Python3 列表list合并的4種方法
- python獲取指定時(shí)間段內(nèi)特定規(guī)律的日期列表
- python實(shí)現(xiàn)合并兩個(gè)有序列表的示例代碼
- python求列表對(duì)應(yīng)元素的乘積和的實(shí)現(xiàn)
- Python統(tǒng)計(jì)列表元素出現(xiàn)次數(shù)的方法示例
- python 合并列表的八種方法
- python 列表元素左右循環(huán)移動(dòng) 的多種解決方案
- Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法
- 淺談Python基礎(chǔ)之列表那些事兒