几种复制的区别

#1:赋值型  指向了同一个 存储的位置就是那一个

data = [1,4,5,4,5,89,6,5,4,5,2,5,6]
new_data = data
data.pop()
print(data)
print(new_data)
print('--------------------')
new_data.pop()
print(data)
print(new_data)
# [1, 4, 5, 4, 5, 89, 6, 5, 4, 5, 2, 5]
# [1, 4, 5, 4, 5, 89, 6, 5, 4, 5, 2, 5]
# --------------------
# [1, 4, 5, 4, 5, 89, 6, 5, 4, 5, 2]
# [1, 4, 5, 4, 5, 89, 6, 5, 4, 5, 2]
data = [1,4,5,4,5,89,6,5,4,5,2,5,6]
new_data = copy(data) #返回的是array 没有独立出来
new_data2 = deepcopy(data) #完全独立出来了,生成了一个新的存储位置
#对于上边的data,两者是没有区别的(除了存储 的位置)
print(new_data == new_data2) #true
print(new_data2 is new_data) #false 里面的内容相等,但存储不同
data.pop()
print(new_data)
print(new_data2)   #两者都不会变
# [1, 4, 5, 4, 5, 89, 6, 5, 4, 5, 2, 5, 6]
# [1, 4, 5, 4, 5, 89, 6, 5, 4, 5, 2, 5, 6]
#对于列表中元素有列表的两者不同
data1 = [1,4,2,[5,6,2],5,9]
data1_new = copy(data1) #相当于浅复制,只复制表面
data1_new1 = deepcopy(data1)#完全的复制
data1[-1] = 8888
print(data1)
print(data1_new)
print(data1_new1)
print('------------------')
# [1, 4, 2, [5, 6, 2], 5, 8888]
# [1, 4, 2, [5, 6, 2], 5, 9]
# [1, 4, 2, [5, 6, 2], 5, 9]
data1[3][1] = 9999  #如果改变的是里面的列表 copy里面的也会跟着变 deepcopy不会
print(data1)
print(data1_new)
print(data1_new1)
# [1, 4, 2, [5, 9999, 2], 5, 8888]
# [1, 4, 2, [5, 9999, 2], 5, 9]
# [1, 4, 2, [5, 6, 2], 5, 9]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

best啊李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值