Python中的深拷贝和浅拷贝
admin
2024-04-23 04:34:34
0

=:赋值

将b赋值给e,但是b和e都指向同一个内存地址

b = [10, 20, 30, [40, 41]]e = b
print('id(b)=', id(b))  # 2233189087488
print('id(e)=', id(e))  # 2233189087488

若更改b的内容,e也会跟着变化

b.append(99)print('b:', b)  # [10, 20, 30, [40, 41], 99]
print('e:', e)  # [10, 20, 30, [40, 41], 99]

copy:python内置函数,对原有数据建立副本。

b = [10, 20, 30, [40, 41]]
d = b.copy()
print('b:', b)#[10, 20, 30, [40, 41]]
print('d:', d)#[10, 20, 30, [40, 41]]

看似拷贝后内容不变,但是内存地址变化了。

print('id(b)=', id(b))  # 2768919337344
print('id(d)=', id(d))  # 2768919277888

若更改b的内容,d不会变化

b.append(99)
print('b:', b)  # [10, 20, 30, [40, 41], 99]
print('d:', d)  # [10, 20, 30, [40, 41]]

那深拷贝和浅拷贝针对于什么问题呢?

上述可知,对于列表b,若使用copy函数进行副本建立后,在原列表b增加了新元素后,副本内未增加新元素,但是可以看到,列表b内还包含了一个列表[40,41]。
b = [10, 20, 30, [40, 41]]
d = b.copy()print('id(b)=', id(b))  # 2768919337344
print('id(d)=', id(d))  # 2768919277888
print('id(b[-1])=', id(b[-1]))  # 1580034370560
print('id(d[-1])=', id(d[-1]))  # 1580034370560

可以看出,copy后,整个列表外层的内存地址发生了变化,但内部嵌套的列表的地址未发生变化。

改变b的内层列表的内容,d也会跟着变化。
b = [10, 20, 30, [40, 41]]
d = b.copy()
b[-1].append(1000)
print(b)#[10, 20, 30, [40, 41, 1000]]
print(d)#[10, 20, 30, [40, 41, 1000]]
当改变原数据的一级目录时,副本不会发生变化;但是改变原数据的二级目录时,副本也会跟着变化,copy函数对于一级目录是深拷贝,对于二级目录是浅拷贝。那怎么实现对二级目录的深拷贝呢?​使用copy.deepcopy函数。
import copy
b = [10, 20, 30, [40, 41]]
d = copy.deepcopy(b)
print('id(b)=', id(b))  # 2255973788352
print('id(d)=', id(d))  # 2255974928064
print('id(b[-1])=', id(b[-1]))  # 2255973802432
print('id(d[-1])=', id(d[-1]))  # 2255974927808b[-1].append(1000)
print(b)#[10, 20, 30, [40, 41, 1000]]
print(d)#[10, 20, 30, [40, 41]]
​此时深拷贝前后的列表内​嵌入的列表的内存地址是不同的,所以对原数据进行修改,​副本不会受影响。​

相关内容

热门资讯

银行板块早盘逆势活跃,银行ET... 7月13日早盘,市场震荡调整,银行板块逆势活跃。截至午间收盘,中证银行指数上涨1.5%,香港证券指数...
2026常州展厅设计公司深度分... 企业展厅在中期追加预算,并不是少数项目的偶发现象,而是很多企业在启动阶段就埋下的结果。尤其在常州这类...
测试市场极限!美国6家超大型A... 随着科技股、人工智能(AI)股近期调整,美股科技巨头发行的巨额规模债券近期也遭遇抛售压力。 今年,六...
2026年美团商家费用全面拆解... “上美团做个店,光开户和推广一年就要烧掉辆车?”这是2026年不少本地商家在数字化浪潮前最大的焦虑。...
金价、油价突发! 7月13日早盘, 国际油价大幅高开,截至北京时间6:22,布伦特原油涨3.55%, 报78.71美元...
英伟达CEO黄仁勋称AI智能体... 【CNMO科技消息】据CNMO科技了解,英伟达CEO黄仁勋近日在一场专访中谈及智能体与人的区别时表示...
李小冉徐佳宁被曝离婚 两人于2... 搜狐娱乐讯 7月13日,有八卦媒体发文爆料称李小冉和徐佳宁在前两年就已分居,并已于去年11月在北京办...
静待“七巨头”财报表现,纳指1... 文丨斯嘉特 David Scutt 编辑丨吴海珊 最近3个多月以来,纳斯达克100指数从3月下旬触及...
这3种早餐正在给血管“添堵”,... 现代保健报讯:“周大夫,我去年刚放了一个支架,这才一年,怎么又胸闷了?” 兰州慧源堂中医诊所里,60...
原创 2... 上周五,现货黄金小幅下行,随后在4100关口附近来回震荡,最终收跌0.11%,报4119.27美元。...
36氪首发 | 港中大博士、前... 作者 | 乔钰杰 编辑 | 袁斯来 硬氪获悉,深圳光之跃迁科技有限公司(Lumisition Rob...
期货交易中哪些因素导致成交量和... 在期货交易里,成交量和持仓量的变化是投资者极为关注的重要指标,它们能够反映市场的活跃度与投资者的参与...
重磅合资|双强联手,凯伦防火涂... 伴随国内基建升级、绿色建筑普及以及建筑消防安全规范化发展,高性能、环保型特种建材已然成为行业刚需。 ...
《扩大消费“十五五”规划》:扩... 国务院批复同意《扩大消费“十五五”规划》。《规划》提出,发展数字消费。促进数字消费高质量发展,深入推...
A股点燃PCB投资热,慧联电子... 随着PCB需求爆发,A股市场上相关并购、资产重组涌现。近日,新锐股份宣布拟以8亿元收购慧联电子80%...
基金忠言|新锐量化直线跳水,暴... 图片来源:视觉中国 蓝鲸新闻7月13日讯(记者 祁和忠)5月中旬以来,平安新锐量化突然直线跳水,单位...
原创 如... 作为知名经济学家,尤其是在金融市场流量很大的经济人物,其本身要做到完全独立其实难度不小,一旦其价值增...
服务出海提速意味着什么 商务部数据显示,今年1月份至5月份,知识密集型服务出口6677.5亿元,增长12.2%,其中,知识产...
期货交易中怎样在期货交易中平衡... 在期货交易里,合理地处理持仓与资金的关系是关乎交易成败的关键因素。期货市场具有高风险性和高杠杆性,若...
两市遭遇“黑色星期一”,红利飘... 7月13日两市遭遇“黑色星期一”,科技板块等全线重挫,三大指数低开低走。银行、煤炭等红利资产逆市坚挺...