python中元祖,列表,字符串付给一个变量时。。。。

 

python中元祖,列表,字符串付给一个变量时,这个变量仅仅是参考而已。也就是说,原始对象改了,你新赋值的那个也一定会改。因此,要使用值传递,实现起来就是使用切片操作。其实,我们发现这也对于元祖的元素不包含子元祖时才行得通,有子元素时,同样的问题一样会出现,当别人出现修改子元祖是,同样你会发现,你拷贝的那个子元祖也被改了,其实,解决的方法很多,称之为深度克隆把,貌似js里面也有这么一种说法。

'''
Created on 2012-5-12

@author: Administrator
'''
#引用
namelist=['zhang','li','wang']
mylist = namelist;
print('yuanshi list is',namelist)
del namelist[0]
print('namelist is',namelist)
print('mylist is',mylist);
print('#######################')
#拷贝
namelist=['zhang','li','wang']
mylist=namelist[:]
print('yuanshi list is',namelist)
del namelist[0]
print('namelist is',namelist)
print('mylist is',mylist);
print('#######################')
#拷贝里面也含有陷进
namelist=['zhang','li','wang']
namelist_tobeadd=['chen','wang','you']
namelist.append(namelist_tobeadd)
mylist=namelist[:]
print('yuanshi list is',namelist)
del namelist[0]
del namelist[2][2]
print('namelist is',namelist)
print('mylist is',mylist);


当然这上面的程序只是说明克隆不彻底的问题,要想深层次克隆想list这种类型的变量,需要用copy模块的,deepcopy函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老码沉思录

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

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

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

打赏作者

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

抵扣说明:

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

余额充值