python 深复制 浅复制

文章通过Python代码展示了深复制和浅复制的区别。在浅复制中,d[1]指向d[0]的同一内存地址,改变其中一个会影响另一个。而通过`copy.deepcopy`进行深复制,d[1]则拥有独立的副本,修改不会互相影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简单理解:深复制就是为新变量开辟了新空间,只复制内容,当原内容改变时,新内容不跟着变。

浅复制是只是指向原变量,原变量内容变化时,新内容跟着变。

d = defaultdict(dict)
for i in range(1,20):
    d[0][i] = i 

d[1] = d[0]   #浅复制,不论是d[1]还是d[0]变化另一个也都会变

for i in range(20,25):
    d[1][i] = i  

print(d)

输出:

defaultdict(<class 'dict'>,{0: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24}, 
1: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24}})

2、不想让跟着变化:

import copy

d = defaultdict(dict)
for i in range(1,20):
    d[0][i] = i 

d[1] = copy.deepcopy(d[0])###这里是变化
for i in range(20,25):
    d[1][i] = i

print(d)

输出:

defaultdict(<class 'dict'>, {0: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24}, 1: {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19}})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值