python中的copy與deepcopy

來源:互聯網
上載者:User

標籤:不難   賦值運算   例子   二層   多少   改變   運算   地址   epc   

引子:首先我們有一個賦值運算作為引子,如下

1 l1 = [1, 2, 3, [‘java‘, ‘python‘]]2 l2 = l13 l1[0] = 1114 print(l1)    #輸出結果:[111, 2, 3, [‘java‘, ‘python‘]]5 print(l2)    #輸出結果:[111, 2, 3, [‘java‘, ‘python‘]]6 #由上面的例子我們不難明白,python中對於賦值運算來說,l1與l2指向的是同一個地址,所以他們是完全一樣的。
1.淺拷貝copy()
 1 l1 = [1, 2, 3, [‘java‘, ‘python‘]] 2 l2 = l1.copy() 3 print(l1,id(l1))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 46594648 4 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 46861728 5  6 l1[2] = 222 7 print(l1,id(l1))      #輸出結果:[1, 2, 222, [‘java‘, ‘python‘]] 46594648 8 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 46861728 9 10 l1[1] = 33311 print(l1,id(l1))      #輸出結果:[1, 333, 222, [‘java‘, ‘python‘]] 8611285612 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 8670757613 14 l1[3][0] = ‘c++‘15 print(l1,id(l1))      #輸出結果:[1, 333, 222, [‘c++‘, ‘python‘]] 8801336016 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘c++‘, ‘python‘]] 8860808017 #對於淺拷貝來說,第一層建立的是新的地址,然而第二層就不一樣的,輸入的改變也會影響到拷貝項的改變
2.深拷貝deepcopy
 1 import copy 2 l1 = [1, 2, 3, [‘java‘, ‘python‘]] 3 l2 = copy.deepcopy(l1) 4  5 print(l1,id(l1))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 57042104 6 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 57043024 7  8 l1[2] = 222 9 print(l1,id(l1))      #輸出結果:[1, 2, 222, [‘java‘, ‘python‘]] 5704210410 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 5704302411 12 l1[1] = 33313 print(l1,id(l1))      #輸出結果:[1, 333, 222, [‘java‘, ‘python‘]] 5704210414 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 5704302415 16 l1[3][0] = ‘c++‘17 print(l1,id(l1))      #輸出結果:[1, 333, 222, [‘c++‘, ‘python‘]] 5704210418 print(l2,id(l2))      #輸出結果:[1, 2, 3, [‘java‘, ‘python‘]] 5704302419 #對於深拷貝deepcopy來說,無論建立多少個,這些每個之間都是獨立的,改變任意一個元素,
20 #都不會影響到其他的,無論多少層都是一樣的

 

python中的copy與deepcopy

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.