Python中的深拷贝和浅拷贝

在Python中,拷贝是用于创建变量或对象副本的一种方式。深拷贝和浅拷贝是Python中两种不同的拷贝方式。它们之间的差异在于拷贝后的变量或对象副本与原始变量或对象的关系以及它们所占用的内存空间。

下面我会进行详细介绍:

1. 浅拷贝

浅拷贝是创建原始对象内部属性的副本的过程,但是,对于新对象的属性,它们实际上只是指向原始对象的引用。这意味着如果您更改新对象的属性,这些更改将反映在原始对象中。为了进行浅拷贝,可以使用copy模块中的shallowcopy()函数,或者使用切片操作符[:]。

示例:

python
import copy

x = [1, 2, [3, 4]]
y = copy.copy(x)
z = x[:]

y[0] = 10
z[0] = 20

print(x)  # [1, 2, [3, 4]]
print(y)  # [10, 2, [3, 4]]
print(z)  # [20, 2, [3, 4]]

y[2][0] = 30

print(x)  # [1, 2, [30, 4]]
print(y)  # [10, 2, [30, 4]]
print(z)  # [20, 2, [30, 4]]

可以看到,对于新列表y和z,更改它们的第一个元素并不影响原始列表x。但是,更改它们的第三个元素的第一个元素就会反映在原始列表x中的第三个元素的第一个元素中,这是由于它们都共享一个子列表。

2. 深拷贝

深拷贝是创建一个完全不同的副本对象的过程,该对象的所有属性都被复制,包括嵌套的对象和子对象。在深拷贝后,原始对象与新对象不再共享任何内容,也不再占用同一段内存空间。为了进行深拷贝,可以使用copy模块中的deepcopy()函数。

示例:

python
import copy

x = [1, 2, [3, 4]]
y = copy.deepcopy(x)

y[0] = 10
y[2][0] = 30

print(x)  # [1, 2, [3, 4]]
print(y)  # [10, 2, [30, 4]]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值