浅拷贝与深拷贝

浅拷贝与深拷贝

这里以字典为示例展示Python中浅拷贝与深拷贝各自的使用场景。

浅拷贝

在Python中,使用dict.copy()方法创建的是浅拷贝,这意味着新字典(b)中的可变对象(如列表或字典)仍然引用原始字典(a)中的相同对象。但对于不可变类型(如整数、浮点数、字符串等),修改新字典中的值不会影响原始字典。

代码示例

a = {'a': 1, 'b': 2, 'c': 3}
b = a.copy()
b['a'] = 4
print(a)  # 输出: {'a': 1, 'b': 2, 'c': 3}
print(b)  # 输出: {'a': 4, 'b': 2, 'c': 3}

深拷贝

在Python中,要创建一个字典的深拷贝,你可以使用copy模块中的deepcopy函数。深拷贝会创建一个全新的对象,并且递归地复制原始对象中包含的所有可变对象。这样,即使原始对象和新对象中有可变对象,修改一个对象也不会影响另一个对象。

import copy

# 原始字典,包含一个列表作为值
a = {'a': [1, 2, 3], 'b': 2, 'c': 3}

# 使用deepcopy创建深拷贝
b = copy.deepcopy(a)

# 修改深拷贝中的列表
b['a'][0] = 100

# 打印原始字典和深拷贝字典
print(a)  # 输出: {'a': [1, 2, 3], 'b': 2, 'c': 3}
print(b)  # 输出: {'a': [100, 2, 3], 'b': 2, 'c': 3}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值