python中的赋值与深浅拷贝

l1 = [1, 2, 3, ['abcd', 'ggg']]
l2 = l1
l1[0] = 11
print(l1)  # [11, 2, 3, ['abcd', 'ggg']]
print(l2)  # [11, 2, 3, ['abcd', 'ggg']]

l1[3][0] = 'gsir'
print(l1)  # [11, 2, 3, ['gsir', 'ggg']]
print(l2)  # [11, 2, 3, ['gsir', 'ggg']]

对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

l1 = [1,2,3,['abcd','ggg']]
l2 = l1.copy()
print(l1,id(l1))  
print(l2,id(l2))  

l1[1] = 222
print(l1,id(l1))  
print(l2,id(l2))  
 
l1[3][0] = 'gsir'
print(l1,id(l1[3]))
print(l2,id(l2[3]))  
#输出结果为
[1, 2, 3, ['abcd', 'ggg']] 4538493704
[1, 2, 3, ['abcd', 'ggg']] 4538494088
[1, 222, 3, ['abcd', 'ggg']] 4538493704
[1, 2, 3, ['abcd', 'ggg']] 4538494088
[1, 222, 3, ['gsir', 'ggg']] 4538492616
[1, 2, 3, ['abcd', 'ggg']] 4538492616

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

import copy
l1 = [1, 2, 3, ['abcd', 'ggg']]
l2 = copy.deepcopy(l1)

print(l1, id(l1))
print(l2, id(l2)) 

l1[1] = 222
print(l1, id(l1))
print(l2, id(l2))

l1[3][0] = 'gsir'
print(l1, id(l1[3]))  
print(l2, id(l2[3]))
#运行结果为
[1, 2, 3, ['abcd', 'ggg']] 4348167688
[1, 2, 3, ['abcd', 'ggg']] 4348168968
[1, 222, 3, ['abcd', 'ggg']] 4348167688
[1, 2, 3, ['abcd', 'ggg']] 4348168968
[1, 222, 3, ['gsir', 'ggg']] 4348167752
[1, 2, 3, ['abcd', 'ggg']] 4348167880

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

tips:

关于open 模式:
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 3,224评论 0 15
  • 主要内容源自解读《Fluent Python》,理解如有错误敬请指正:-) Python标准库提供了大量使用C来实...
    晓风翌日阅读 3,015评论 0 2
  • 抓了很多皱纹 水的,疼的 两只燕子 两颗相遇的子弹 方向温暖 屋子里有江南 雨水硕大无朋 果实具有能力 我想起了我...
    我是蝎大人阅读 325评论 5 5
  • 今天,我的快递终于到了,从丰台到西城,共历时十天,实际在发货后第三天就已到最后一站,却在那困了七天。 我们早已习惯...
    洛阳锅边糊阅读 256评论 0 0
  • 抱柳身轻,依槐翼薄,惯来叶底深藏。昼永风微,偷窥华屋兰堂。清音花下传幽意,伴庭阴、自在悠扬。一声声、牵思萦怀,各谱...
    圓月阅读 272评论 4 9

友情链接更多精彩内容