python3中深浅copy对比解析
admin
2023-07-23 05:02:06
0

今天小编就为大家带来一篇有关python3中深浅copy对比解析的文章。小编觉得挺不错的,为此分享给大家做个参考。一起跟随小编过来看看吧。

一、赋值对比

1、列表

l1 = [1,2,3]
l2 = l1
l1.append('a')
print(l1,l2)               #[1, 2, 3, 'a'] [1, 2, 3, 'a']
print(id(l1),id(l2))          #43499848 43499848
#可以看到两个列表的值以及id值相同,对应的是同一个内存地址

2、字典

dic = {'name':'barry'}
dic1 = dic
dic['age'] = 18
print(dic,dic1)            #{'name': 'barry', 'age': 18} {'name': 'barry', 'age': 18}
print(id(dic),id(dic1))       #31157344 31157344
#可以看到两个字典的值以及id值相同,对应的是同一个内存地址


3、字符串

s = 'alex'
s1 = s
s2 = s.replace('a','A')
print(s,s1,s2)                  #alex alex Alex
print(id(s),id(s1),id(s2))           #31040208 31040208 31040376
#赋值是同一个内存地址,替换字符串后的变量s2是另外的地址


二、深浅copy

1、浅copy

对于浅copy来说,第一层创建的是新的内存地址。而从第二层开始,指向的是同一个内存地址,所有,对于第二层以及更深的层数来说,保持一致性。

# 1、普通浅copy

l1 = [1,2,3,4]
l2 = l1.copy()
l1.append('a')
print(l1,l2)                     #[1, 2, 3, 4, 'a'] [1, 2, 3, 4]
print(id(l1),id(l2))             #37077320 37078664
#id内存地址不一样,创建了两个地址空间,一个改变,另一个不会变化

# 2、嵌套浅copy


l1 = [1,[22,33,44],3,4,]
l2 = l1.copy()
l1[1].append('a')
print(l1,id(l1),l2,id(l2))       #[1, [22, 33, 44, 'a'], 3, 4]  [1, [22, 33, 44, 'a'], 3, 4]
print(id(l1),id(l2))              #43173512 43173256
print(id(l1[1]),id(l2[1]))       #43172168 43172168
# 第一层都是独立的的。从第二层开始都是是公用的,改一个都会变。
l1 = [1,[22,33,44],3,4,]
l2 = l1.copy()
l1[0] = 111
print(l1,l2)                     #[111, [22, 33, 44], 3, 4] [1, [22, 33, 44], 3, 4]
print(id(l1),id(l2))             #43370120 43369864
# 可以看到第一层都是独立的,改一个不影响另一个的结果

2、 深copy.deepcopy()

对于深copy来说,两个是完全独立的,改变任意一个的元素(无论是多少层),另一个绝不会改变。


import copy
l1 = [1,[22,33,44],3,4,]
l2 = copy.deepcopy(l1)
# 改变第一层
l1[0] = 111
print(l1,l2)                    #[111, [22, 33, 44], 3, 4] [1, [22, 33, 44], 3, 4]
print(id(l1),id(l2))            #43238536 43239048
# 改变第二层
l1[1].append('a')
print(l1,l2)                   # [111, [22, 33, 44, 'a'], 3, 4] [1, [22, 33, 44], 3, 4]
print(id(l1),id(l2))           #43238536 43239048

以上就是python3中深浅copy对比的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注行业资讯!

相关内容

热门资讯

假大师虚构鬼神,性侵一对母女获... “大师说只有跟他‘炼精化气’才能达到‘取坎填离’的效果,从而祛病消灾,实现逆势改命。我当时信以为真了...
快热式电热水器不出热水 发现热水器不出热水,这时候需要先检查冷热水管的安装,接反了的情况下热水器没有检测到水流动,自然是不会...
快热式热水器的组装方法 快热式热水器是一种现代化的热水器设备,安装方便,取暖速度非常快速。以下是快热式热水器的组装方法: ...
万和热水器e4故障是什么如何排... 万和热水器e4故障是什么如何排除万和热水器显示e4是高温报警,及干烧预警,热水出口温度在85℃以上。...
康泉电热水器故障排除 常见的故障有几种,一是热水器在加热的过程中,从安全阀孔中流出水滴,这种情况需要先关闭进水阀,然后将混...
莱宾热水器E4故障代码 莱宾热水器E4故障代码表示出水温度过高或传感器故障。其原因可能是水压过大,使水温过高;水阀门损坏或不...
赖清德妄称不会放弃提高防务支出... 澎湃新闻记者 李文姬2026年6月24日上午,国台办在新闻发布厅举行例行新闻发布会,发言人张晗就近期...
凡星闪耀丨一抹天青写人生——记... 李晓涓在精心打磨作品。李晓涓在制作汝瓷。李晓涓汝瓷作品《听福》。李晓涓汝瓷作品《祥瑞》。孟玉松汝瓷作...
探寻河南党史里的第一次丨郑州大... “嵇文甫一生从教无怨无悔,把所有的爱都倾注在学生身上,很多学生受他学术启迪学习成才。作为真正的&ls...
河南省省长质量(专利)奖揭晓 ... 河南日报讯 (全媒体记者 孔学姣)6月23日,记者获悉,省政府近日发布《关于授予河南省省长质量(专利...