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函數

發佈了73 篇原創文章 · 獲贊 18 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章