Python-copy()与deepcopy()区别

import copy
listt=[4,0,5,[8,["蔬菜","水果"]],[11,13]]#建立多维深层列表,3维3层列表
cp1 = copy.copy(listt)
cp2=copy.deepcopy(listt)
listt[1]="baba"#对列表第一维数据第2个元素进行修改
print(listt)
#输出结果:[4, 'baba', 5, [8, ['蔬菜', '水果']], [11, 13]]
print(cp1)
#输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]]
print(cp2)
#输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]]
print('*'*50)
listt[3]='mama'#用"mama"整体替换listt列表中的"[8, ['蔬菜', '水果']]"
print(listt)
#输出结果:[4, 'baba', 5, 'mama', [11, 13]]
print(cp1)
#输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]]
print(cp2)
#输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]]
print('-'*50)
listt[4][0]="didi"#用"didi"整体替换listt列表中的"11"
print(listt)
#输出结果:[4, 'baba', 5, 'mama', ['didi', 13]]
print(cp1)
#输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], ['didi', 13]]
print(cp2)
#输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]]

结论:
1.用某个元素替换多维多层列表中的元素时,当替换的是第一维元素或整体替换某个二层列表时,运用copy.copy(原列表名称)
和copy.deepcopy(原列表名称)复制得到的数据,都不会跟随原列表的改变而改变,即即使元列表修改了,但复制过来的新列表还是与原来的列表一样。
2.当替换的是第二维及以上的某个元素时,copy.copy(原列表名称)会跟随原列表改变而改变,但是copy.deepcopy()不会改变。
注意:对于多维多层数列表,当列表只列出一个下标时,即使是二层以上的列表,对于的也只是列表元素,如上面的“listt[3]='mama'”,这里"mama"是整体替换listt列表中的"[8, ['蔬菜', '水果']]"



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值