python中的复制

本文深入探讨了Python中复制对象的三种方法:引用、浅复制和深复制。通过具体代码示例,展示了每种复制方式的特点及其对数据的影响,帮助读者理解不同场景下选择合适复制方式的重要性。

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

复制
python中复制有三种
  1. 引用
  2. 浅复制
  3. 深复制
引用

引用操作是用‘=’来赋值,两个变量使用同一块地址区域,使用相同的数据

代码测试
a = np.arange(12)
b = a
print(b is a)
b.shape = 3,4
print(a.shape)
print(id(a))
print(id(b))
结果如下
True
(3, 4)
2772596221712
2772596221712
浅复制

浅复制使用view方法,两个变量使用不同的地址区域,使用相同的数据

代码测试
c = a.view()
print(c is a)
c.shape = 4,3
c[3,2] = 324
print(a.shape)
print(id(a))
print(id(c))
print(a)
结果如下
False
(3, 4)
2772596221712
2772626268768
[[  0   1   2   3]
 [  4   5   6   7]
 [  8   9  10 324]]
深复制

深复制使用copy方法,两个变量使用不同的地址区域,使用不同的数据

代码测试
d = a.copy()
d[0,0] = 987
print(d)
print(id(a))
print(id(d))
print(a)
结果如下
[[987   1   2   3]
 [  4   5   6   7]
 [  8   9  10 324]]
2772596221712
2772628476192
[[  0   1   2   3]
 [  4   5   6   7]
 [  8   9  10 324]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值