Python深浅拷贝的区别

在 Python 中,深拷贝和浅拷贝是两个常用的操作。

浅拷贝是指创建一个新对象,这个新对象有着原始对象的一些属性值,但是它不会复制原始对象中引用的对象。也就是说,在浅拷贝中,新对象只是原始对象的一个副本,如果原始对象包含了可变的对象(如列表、字典等),那么新对象中的这些可变对象也将被原始对象和新对象所共享。

深拷贝是指创建一个新对象,这个新对象有着原始对象的所有属性值,而且它会递归地复制原始对象中引用的所有对象。也就是说,在深拷贝中,整个对象树都会被复制到一个新的对象中,即使原始对象中包含了可变的对象,也不会共享。

在 Python 中,可以使用 copy 模块来进行深浅拷贝操作。具体使用方式如下:

浅拷贝:

import copy

# 创建一个列表
lst1 = [1, 2, [3, 4]]

# 浅拷贝列表
lst2 = copy.copy(lst1)

# 修改原始列表中嵌套的列表元素
lst1[2][0] = 5

# 打印结果
print(lst1)  # 输出:[1, 2, [5, 4]]
print(lst2)  # 输出:[1, 2, [5, 4]]

从上面的代码可以看出,当我们修改原始列表中嵌套的列表元素时,浅拷贝的列表也发生了相应的改变。

深拷贝:

import copy

# 创建一个列表
lst1 = [1, 2, [3, 4]]

# 浅拷贝列表
lst2 = copy.copy(lst1)

# 修改原始列表中嵌套的列表元素
lst1[2][0] = 5

# 打印结果
print(lst1)  # 输出:[1, 2, [5, 4]]
print(lst2)  # 输出:[1, 2, [5, 4]]

从上面的代码可以看出,当我们修改原始列表中嵌套的列表元素时,深拷贝的列表并没有发生相应的改变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值