python中的浅拷贝与深拷贝

文章讲述了Python中的浅拷贝和深拷贝概念,通过示例展示了赋值、浅拷贝(c.copy())和深拷贝(copy.deepcopy())的区别,指出浅拷贝只复制父对象,深拷贝则包括子对象,对数据修改的影响也不同。
摘要由CSDN通过智能技术生成

示例代码

import  copy
a=[[0,1,2,3],[4,5,6,7],[8,9,10,11]]
b=a #赋值,相当于给a起了别名为b
c=a.copy() #浅拷贝
d=copy.deepcopy(a) #深拷贝

a[0][1]+=1
a.append([12,13,14,15])

print("a:",a) 
print("b:",b) 
print("c:",c)
print("d:",d) 

输出结果

a: [[0, 2, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]
b: [[0, 2, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]
c: [[0, 2, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
d: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

解释:

  1. 赋值:b=a,给a起了个别名为b
图1.赋值: b=a
  1. 浅拷贝c=a.copy()

    只拷贝父对象,子对象不拷贝

图2.浅拷贝 c=a.copy()
  1. 深拷贝:d=copy.deepcopy(a)

    父类对象和子类对象都拷贝

    图3.深拷贝 d=copy.deepcopy(a)

结论

操作和原数据是否指向同一个对象第一层数据为基本类型原数据中包含子对象
赋值改变使原数据一同改变改变使原数据一同改变
浅拷贝改变不会使原数据一同改变改变使原数据一同改变
深拷贝改变不会使原数据一同改变改变不会使原数据一同

参考链接

彻底讲明白浅拷贝与深拷贝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值