python对象拷贝

在 Python 中,对象的拷贝方式主要有三种:浅拷贝(shallow copy)、深拷贝(deep copy)、以及直接赋值。每种方式的行为有所不同,特别是在处理嵌套对象时。

1. 直接赋值

直接赋值并不会拷贝对象,而是创建一个新的引用,指向同一个对象。因此,改变对象的内容会影响所有引用。

# 直接赋值
a = [1, 2, 3]
b = a  # b 是 a 的引用
b[0] = 99

print(a)  # 输出: [99, 2, 3]
print(b)  # 输出: [99, 2, 3]

2. 浅拷贝(shallow copy)

浅拷贝会创建一个新的对象,但只复制顶层对象,不会递归复制嵌套的对象。因此,嵌套对象仍然是原始对象的引用。

方法1:使用 copy 模块中的 copy() 函数
import copy

a = [1, 2, [3, 4]]
b = copy.copy(a)  # 浅拷贝

b[0] = 99
b[2][0] = 100

print(a)  # 输出: [1, 2, [100, 4]]
print(b)  # 输出: [99, 2, [100, 4]]
方法2:使用列表的 copy() 方法(仅适用于列表)
a = [1, 2, [3, 4]]
b = a.copy()  # 浅拷贝

b[0] = 99
b[2][0] 
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值