复制的‘深浅’‘真假’

# 真假 copy
# 假copy
names = ['Tudou', 'Qiezi',['Xiaocong', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
name1 = names.copy()     # 将names 复制到name1
names[0] = 'Fanqie'      # 更改names中的值
print(names)
print(name1)
# 输出结果:
# >> ['Fanqie', 'Qiezi', ['Xiaocong', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
# >>['Tudou', 'Qiezi', ['Xiaocong', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
names[2][0] = 'Caihua'   # 将names中子元素列表的的值改变
print(names)
print(name1)
# >>> ['Fanqie', 'Qiezi', ['Caihua', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
# >>> ['Tudou', 'Qiezi', ['Caihua', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
#  更改第一层数据后,复制而来的name1中的数据没有更改。
#  而更改names中的子元素'['Caihua', 'Lajiao']'的数据后,发现name1中的数据也更改了。
#  copy()方法只是简单的复制了names中的第一层数据,而对于列表中的列表子元素,只是复制了其引用地址。
#  所以在更改子元素列表时,复制得到的列表也被改变了.
#  name1 = names # 将name1指向变量names指向的内存地址

# 真复制,调用copy模块
import copy
names = ['Tudou', 'Qiezi',['Xiaocong', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
name1 = copy.copy(names)            # 该方法为假(浅)复制
name1 = copy.deepcopy(names)        # 深复制
names[0] = 'Fanqie'
names[2][0] = 'Caihua'

print(names)
print(name1)
# ['Fanqie', 'Qiezi', ['Caihua', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
# ['Tudou', 'Qiezi', ['Xiaocong', 'Lajiao'], 'Xihongshi', 'Baicai', 'Qingcai']
#  可见复制得到的name1中的值并没有改变。  此方法慎用,当数据过多时,会占据额外的内存。

 

转载于:https://www.cnblogs.com/Houlex/p/10118763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值