浅拷贝和深拷贝

本文介绍了Python中的浅拷贝(.copy())和深拷贝(赋值=)的区别。浅拷贝仅复制数据,而深拷贝则创建新的内存空间。通过示例展示了对字典和列表操作时,浅拷贝和深拷贝的不同影响,阐述了它们在数据变更时对原对象的影响。
摘要由CSDN通过智能技术生成

python:
复制方法.copy——浅拷贝,只是复制数据,指针(内存地址)是改变的
赋值 =——深拷贝,即地址是绑定在一起的

# 浅拷贝和深拷贝
a = {1:'one',2:'two',3:'three'}
b = a.copy()
c = a
print(a,b,c)
c= {} #!!!!!!!!!!!!!!!!
print(a,b,c)

输出:
{1: ‘one’, 2: ‘two’, 3: ‘three’} {1: ‘one’, 2: ‘two’, 3: ‘three’} {1: ‘one’, 2: ‘two’, 3: ‘three’}
{1: ‘one’, 2: ‘two’, 3: ‘three’} {1: ‘one’, 2: ‘two’, 3: ‘three’} {}

# 浅拷贝和深拷贝
a = {1:'one',2:'two',3:'three'}
b = a.copy()
c = a
print(a,b,c)
c[4]= 'four'# !!!!!!!!!!!!!!!!!!!!!!!
print(a,b,c)

输出:
{1: ‘one’, 2: ‘two’, 3: ‘three’} {1: ‘one’, 2: ‘two’, 3: ‘three’} {1: ‘one’, 2: ‘two’, 3: ‘three’}
{1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’} {1: ‘one’, 2: ‘two’, 3: ‘three’} {1: ‘one’, 2: ‘two’, 3: ‘three’, 4: ‘four’}

第一个程序对c做更改时,a并没有改变;但是当对c里面的元素修改时,a也跟着改变了

接着用序列来试试:

a = [1,2,3]
b = a.copy()
c = a
print(a,b,c)
c=[]
print(a,b,c)

输出:
[1, 2, 3] [1, 2, 3] [1, 2, 3]
[1, 2, 3] [1, 2, 3] []

# 浅拷贝和深拷贝
a = [1,2,3]
b = a.copy()
c = a
print(a,b,c)
c.append(4)
print(a,b,c)

输出:
[1, 2, 3] [1, 2, 3] [1, 2, 3]
[1, 2, 3, 4] [1, 2, 3] [1, 2, 3, 4]

浅拷贝(复制):与源相互独立,不会互相影响
深拷贝(赋值):增加了一个新标签,指向相同的内存空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值