python list深浅copy

copy() (浅copy)

如何理解:字面意思,也就是复制嵌套列表时“浅浅地”copy,只copy第一层,其它层共用地址空间。也就是在复制出的嵌套列表中,只有修改第一层元素时不影响原列表,修改嵌套列表元素,原列表中相应元素随之修改,它们共用地址空间。

举例说明:

>>> list1 = ['a',1,2,"haha",["user_name","password"],4,6]
>>> list2 = list1.copy()  #浅copy了list1
>>> list2
['a', 1, 2, 'haha', ['user_name', 'password'], 4, 6]
>>> list2[0] = 520  #修改list2的第一个元素
>>> list2
[520, 1, 2, 'haha', ['user_name', 'password'], 4, 6]
>>> list1  #list1的第一个元素并没有受到影响,独立于list2
['a', 1, 2, 'haha', ['user_name', 'password'], 4, 6]
>>> list2[4][0] = "user_name2"  #修改list2的嵌套列表元素中的第一个元素
>>> list2
[520, 1, 2, 'haha', ['user_name2', 'password'], 4, 6]
>>> list1  #此时list1中的嵌套列表元素也跟着发生了改变,与list2的嵌套元素共用一个地址
['a', 1, 2, 'haha', ['user_name2', 'password'], 4, 6]

应用场景设想:比如银行卡主副卡,可以共享流水信息,但是个人信息相互独立。

deepcopy() (深copy)

理解:即复制出的嵌套列表的所有层都可相互独立,修改复制出的list中任意元素都不会影响原列表。

使用:需要导入copy包

举例说明:

>>> import copy
>>> list3 = copy.deepcopy(list1)
>>> list3
['a', 1, 2, 'haha', ['user_name2', 'password'], 4, 6]
>>> list3[1] = 3  #修改list3中第二个元素
>>> list3
['a', 3, 2, 'haha', ['user_name2', 'password'], 4, 6]
>>> list1  #list1第二个元素不受影响
['a', 1, 2, 'haha', ['user_name2', 'password'], 4, 6]
>>> list3[4][1] = "user_name3"  #修改list3中嵌套列表元素中第二个元素
>>> list3
['a', 3, 2, 'haha', ['user_name2', 'user_name3'], 4, 6]
>>> list1  #list1还是不受影响
['a', 1, 2, 'haha', ['user_name2', 'password'], 4, 6]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值