Python中的浅拷贝和深拷贝

# 深拷贝和浅拷贝的区别
import copy

# 浅拷贝
list_1 = [1, 2, 3, 4]
list_2 = list_1  # 浅拷贝,只是将列表的应用复制给了list_2
list_2[1] = "b"  # 当通过list_2修改列表的元素时候,实际上是修改了list_1和list_2同时指向的列表
print(list_1)  # 输出  [1, 'b', 3, 4]
print(list_2)  # 输出  [1, 'b', 3, 4]

list_1[0] = 'a'
print(list_1)  # 输出  ['a', 'b', 3, 4]
print(list_2)  # 输出  ['a', 'b', 3, 4]

# 深拷贝
list_3 = [5, 6, 7, 8]
list_4 = copy.deepcopy(list_3)  # 给list_4重新申请一块内存,存放[5,6,7,8],和list_3不在同一块内存中
list_4[1] = 'b'
print(list_3)  # 输出 [5, 6, 7, 8]
print(list_4)  # 输出 [5, 'b', 7, 8]

list_3[0] = 'a'
print(list_3)  # 输出  ['a', 6, 7, 8]
print(list_4)  # 输出  [5, 'b', 7, 8]

补充

import copy
a = [1,2,3,4,['a','b']]

b = a          # 赋值
c = a[:]        # 浅拷贝
d = copy.copy(a)    # 浅拷贝
e = copy.deepcopy(a)  # 深拷贝

a.append(5)
a[4].append('c')

print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)

输出:

a= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c= [1, 2, 3, 4, ['a', 'b', 'c']]
d= [1, 2, 3, 4, ['a', 'b', 'c']]
e= [1, 2, 3, 4, ['a', 'b']]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值