目錄內建模組 copy
# 注意:由於拷貝對於不可變物件等同於賦值操作,所以你會發現列表中的不可變元素無論深淺拷貝位址指向不變
# 淺拷貝-方式一: [:]
>>> l1 = [['5', '2', '1'], ['1', '3', '1', '4']]
>>> id(l1)
4401079144
>>> map(id, l1)
[4401099336, 4401100056]
>>> l2 = l1[:]
>>> id(l2)
4401085328
>>> map(id, l2)
[4401099336, 4401100056]
# 淺拷貝方式二: copy.copy(x)
>>> import copy
>>> l1 = [['5', '2', '1'], ['1', '3', '1', '4']]
>>> id(l1)
4401085040
>>> map(id, l1)
[4401079144, 4401083672]
>>> l2 = copy.copy(l1)
>>> id(l2)
4402468120
>>> map(id, l2)
[4401079144, 4401083672]
# 深拷貝方式一: copy.deepcopy(x, memo=none, _nil=)
>>> import copy
>>> l1 = [['5', '2', '1'], ['1', '3', '1', '4']]
>>> id(l1)
4402559960
>>> map(id, l1)
[4402560248, 4401062328]
>>> l2 = copy.deepcopy(l1)
>>> id(l2)
4401072536
>>> map(id, l2)
[4401100344, 4401101136]
>>> import copy
>>> a = '123'
>>> y = copy.copy(a) # 淺拷貝
>>> id(a)
4322676048
>>> id(y)
4322676048
>>> y = copy.deepcopy(a) # 深拷貝,和淺拷貝效果一樣
>>> id(y)
4322676048
>>> l = ['1','2','3']
>>> x = copy.copy(l)
>>> id(l)
4322239336
>>> id(x)
4322239120
>>> id(l[0])
4320359368
>>> id(x[0])
4320359368
>>> x = copy.deepcopy(l)
>>> id(x)
4322237544
>>> id(l)
4322239336
>>> id(x[0])
4320359368
>>> id(l[0])
4320359368
當列表中存在可變物件時,深拷貝後,可變物件位址會被改變
>>> l = ['1','2','3',['1','2']]
>>> x = copy.deepcopy(l)
>>> id(x)
4322239336
>>> id(l)
4322213040
>>> id(x[0]) # 可變物件元素相同
4320359368
>>> id(l[0])
4320359368
>>> id(x[-1]) # 這是乙個可變元素
4322213688
>>> id(l[-1])
4322239120
>>> x = copy.copy(l) # 淺拷貝,位址都相同
>>> id(l[-1])
4322239120
>>> id(x[-1])
4322239120
python copy模組 待優化的功能
deep2type是乙個字典,point dict deep2type之後,如果修改point dict,也會對deep2type造成影響,請問如何解決 可以通過深度複製的方法,把源資料複製,得到乙個新的資料物件,操作新資料物件不會影響到源資料,詳情如下 import copy point dict...
python copy模組中的函式例項用法
1 copy.copy 函式可用於複製列表或字典等可變值,複製後的列表和原列表是兩個獨立的列表。import copy origin 1,2,3 new copy.copy origin new 0 0 print origin origin print new new 2 www.cppcns.c...
Python copy複製 賦值 深度賦值
a b正常賦值是索引同乙個記憶體位址,實際上,賦值是引用,引用了這個位址。實質上,a 就是b 了,對於a的任何操作都會作用到b 上 b copy.copy a 是淺複製,對於第一層是不同的記憶體位址,對於第二層是相同的記憶體位址 eg a 1,2,3,4 b copy.copy a 其中,a 3 和...