python 深拷贝_python 深拷贝

博客介绍了Python中深拷贝的概念,即全拷贝对象包括嵌套对象。给出了深拷贝的实现代码,通过递归处理字典、列表和元组等类型。还进行了验证,对比深拷贝、浅拷贝和原对象的内存地址。最后对代码进行了简化。

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

深拷贝是将对象全拷贝,包括嵌套对象

def deepcopy(cls):

if isinstance(cls, dict):

dct = {}

for k, v in cls.items():

dct[k] = deepcopy(v)

return dct

elif isinstance(cls, list):

li = []

for item in cls:

li.append(deepcopy(item))

return li

elif isinstance(cls, tuple):

li = []

for i in cls:

li.append(deepcopy(i))

return tuple(li)

else:

return cls

验证:

import copy

if __name__ == '__main__':

lst = [1, 2, 3, 6, 4, ([5, 6, 8, 7, [7, 8, {"acb": 89375, "dxt": "kgfjolij", "v": 222}, 5, 4, 7]], (2,5,{"z":2}))]

res = deepcopy(lst)

print(res,'deep',id(res[5][0]))

print('lst', id(lst[5][0]))

ls = copy.copy(lst)

print('ls', id(ls[5][0]))

#[1, 2, 3, 6, 4, ([5, 6, 8, 7, [7, 8, {'acb': 89375, 'dxt': 'kgfjolij', 'v': # 222}, 5, 4, 7]], (2, 5, {'z': 2}))] deep 42348296

# lst 42348168

# ls 42348168

代码简化:

def deepcopy(cls):

if isinstance(cls, dict):

return {k: deepcopy(v) for k, v in cls.items()}

elif isinstance(cls, list):

return [deepcopy(item) for item in cls]

elif isinstance(cls, tuple):

return tuple([deepcopy(item) for item in cls])

else:

return cls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值