码迷,mamicode.com
首页 > 其他好文 > 详细

深、浅copy

时间:2018-08-11 15:46:00      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:不同   --   strong   列表   类型   deepcopy   深浅copy   end   相同   

深、浅copy多用于列表


浅copy:第一层中不变的数据是独立的,可变类型元素指向同一块内存地址

l1 = [1,2,3,["a","b"]]
l2 = l1.copy()
l1.append(666)
print(l1)
print(l2)
---------
[1, 2, 3, [‘a‘, ‘b‘], 666]
[1, 2, 3, [‘a‘, ‘b‘]]
----------
# print(id(l1),id(l2))  #4335432200 4335434184
# print(id(l1[-1]),id(l2[-1]))  #4335441416 4335441416

打印两个列表的id可以发现两个列表本身的id是不同的,即时两个不同的内存地址,但是对于第二层的列表的id来看,他们是只想同一块内存地址,所以当他们其中任意一个对里面的列表进行增删改等操作,都会反应到两个列表中

深copy:所有的数据都是完全独立

import copy
l1 = [1,2,3,["a","b"]]
l2 = copy.deepcopy(l1)
------------------
print(l2)
print(id(l1),id(l2))  
print(id(l1[-1]),id(l2[-1]))
----------------
[1, 2, 3, [‘a‘, ‘b‘]]
4334215048 4334284104
4334275016 4334283080

打印两个列表的id,可以发现两个列表的id不相同,同时打印他们第二层的列表,id也是不相同,这说明他们都是属于不同的内存地址,各自的增删改查是互不影响的。

注意:列表的切片属于浅copy

深、浅copy

标签:不同   --   strong   列表   类型   deepcopy   深浅copy   end   相同   

原文地址:https://www.cnblogs.com/xiayuhao/p/9459628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!