赋值,浅拷贝,深拷贝自己的理解

本文详细解析了Python中列表赋值、浅拷贝和深拷贝的区别。通过实例展示了不同拷贝方式下,原始列表和拷贝列表在修改后的变化情况,帮助读者理解拷贝机制。

赋值

a=[1,2,3,4,[35,44,66]]
b=a
b[0]=11
print(a)
print(b)

#[11, 2, 3, 4, [35, 44, 66]]
#[11, 2, 3, 4, [35, 44, 66]]

 

浅拷贝

import copy
a=[1,2,3,4,[35,44,66]]
b=copy.copy(a)
b[0]=11
print('a',a)
print('b',b)
b[-1][0]=22
print('a',a)
print('b',b)

#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [35, 44, 66]]
#a [1, 2, 3, 4, [22, 44, 66]]
#b [11, 2, 3, 4, [22, 44, 66]]

拷贝了一份a给b,修改b的索引为1的元素,b变了,a没有变,因为数字是不可变的,修改b索引为-1的元素里的元素,发现a变了,因为列表是可变的

 

深拷贝

import copy
a=[1,2,3,4,[35,44,66]]
b=copy.deepcopy(a)
b[0]=11
print('a',a)
print('b',b)
b[-1][0]=22
print('a',a)
print('b',b)

#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [35, 44, 66]]
#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [22, 44, 66]]

深拷贝是完全复制了一份,对a进行深拷贝给b,那么不管怎么改变b的元素和它元素中的子元素,a的元素和元素中的子元素都不会变

转载于:https://www.cnblogs.com/z-x-y/p/9905619.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值