潇洒郎: python 列表list, 字典dict, 集合set的copy()是浅复制还是深复制问题

本文探讨了Python中list、dict和set对象的.copy()方法。当这些对象的元素不是可迭代对象时,.copy()执行的是深复制,即创建的副本不会影响原始对象。然而,如果元素是可迭代对象(如列表、字典或集合),则需要使用`copy.copy()`模块来实现真正的深复制。

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

list, dict, set对象均有方法.copy()

深复制:当列表中、字典中、set中的元素为不可迭代对象时(非列表、字典、集合)

list.copy() dict.copy() set.copy() 为深复制,复制的副本不影响原来的

a= [1,2,3]
b= a.copy()
b[0]=3
print(a,b) # [1, 2, 3] [3, 2, 3]

浅复制:当列表中、字典中、set中的元素为可迭代对象时(列表、字典、集合)

a= [[1,2,3]]
b= a.copy()
b[0][0]=3 
print(a,b) # [[3, 2, 3]] [[3, 2, 3]] 此时a=b, b 发生变化,a也改变了,属于浅复制

真正的深复制

import copy

import copy
a= [[1,2,3]]
b= copy.deepcopy(a)
b[0][0]=3
print(a,b) # [[1, 2, 3]] [[3, 2, 3]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇洒郎

您打赏我发自肺腑努力创作的心灵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值