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]]
​此时深拷贝前后的列表内​嵌入的列表的内存地址是不同的,所以对原数据进行修改,​副本不会受影响。​

相关内容

热门资讯

原创 母... 赵珈琪如今的生活令人羡慕,她是国家一级演员,家中几乎每一位亲人都与演艺圈有着深厚的渊源。她的丈夫虽然...
首席展望|摩根大通刘鸣镝:A股... 来源:澎湃新闻 【编者按】 2026年是“十五五”开局之年,中国经济步入新发展阶段。 新形势下,外资...
怎么看全球产业格局之变 怎么看全球产业格局之变 刘振中 百年变局加速演进,世界经济版图深度调整,全球产业格局正经历一场系统性...
量子互联网成为网络新前沿 当互联网首次将全球计算机连接起来时,它彻底改变了社会,尤其是人与人之间的沟通方式。如今,我们正站在另...
国乒全主力出征新加坡大满贯 男... 北京时间2月20日,2026年WTT新加坡大满贯赛女单、男单签表出炉。 新加坡大满贯赛国乒全主力出征...
原创 有... 仔细想想这几年,日子过得真有点儿微妙。 房价稳了但没那么火热了,工作岗位好像更多样却也更挑人,买东西...
原创 活... 繁华都市的街头巷尾,昔日熙攘的店铺如今却悄然显露疲态。放眼望去,“旺铺转让”的告示随处可见,许多曾经...
原创 黄... 2026年2月19日,国际伦敦现货黄金报价为每盎司4903美元,国内黄金实时价格为每克1084元,白...
纠治“抢票神器”“哄抬价格”等... 来源:央视 记者今天从市场监管总局了解到,春节假期,节日消费、旅游服务等市场火热。为维护春节期间市场...
解锁区块链世界:公有链翻译的知... 在信息技术飞速发展的今天,公有链作为区块链技术的重要分支,正逐渐渗透到金融、供应链、数字身份等多个领...
河南蒙古族自治县必须品尝的小吃... 在广袤的中国大地上,河南蒙古族自治县宛如一颗璀璨的明珠,散发着独特的民族文化魅力。而当地的小吃,更是...
原创 与... 作品声明:内容仅供参考,如有不适及时就医 双相情感障碍是一种长期的精神疾病,其特征是情绪波动剧烈,...
洛阳市孟津区筑牢基层网底 加强... 近日,记者从洛阳市孟津区卫生健康委获悉,孟津区以乡村一体化管理为主线,深化“乡聘村用”改革,强化大学...
原创 黄... 2月18日,国内黄金现货价1104元/克,白银18.9元/克,品牌零售价显著高于水贝批发价,周大福等...
“全款买房”和“贷款30年”,... 大家好,在进入正文之前,给大家做一个推荐。 我的一个设计师好友夏夏,从LXD离职后,经历过设计创业的...
港股马年首秀:智谱暴涨43%市... 大年初四(2月20日),当A股仍在享受春节假期时,港股已率先敲响马年交易的锣声。这匹"金融骏马"的首...
突发! 某大型国有汽车集团原董... 2026年2月,临近60岁法定退休年龄的方红卫终未等来功成身退。 从车间技术员到陕汽控股董事长,方红...
【首都除夕 护卫健康】最暖“年... 春节万家团圆、灯火可亲,而对于北京朝阳医院急诊医学中心的医护人员来说,这个节日往往意味着更重的责任与...
门窗紧闭容易“攒”出一身病,医... 过年了,走亲访友、家人团聚,屋里热热闹闹,门窗也关得严严实实。可待久了,不少人开始觉得头昏脑涨、胸闷...
全年减少6768亿元,3个现象... 开篇先给大家讲个故事,我一个发小在某个二线城市买了一套房,买房那一年正好是2019年,当时这个城市房...