深浅copy
Posted xiayuhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深浅copy相关的知识,希望对你有一定的参考价值。
深、浅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的主要内容,如果未能解决你的问题,请参考以下文章