您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Python如何實現深淺拷貝”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python如何實現深淺拷貝”這篇文章吧。
淺拷貝,記住一點,淺拷貝不管多復雜,只copy第一層,看圖說話。
1、定義源列表list_s,列表list_c,并進行拷貝操作,查看兩列表的值相等,如下圖所示。
2、現在源列表list_s數據更改,增加數值list_s.append(3),list_s數值改變,而列表list_c的值不變,如下圖所示。
3、現在list_c數據更改,增加數值list_c.append(4),list_c數值改變,而源列表list_s的數值保持不變,如下圖所示。
由以上三步操作可以看出,源list_s里面嵌套了[3,4]列表,對源list_s進行追加3,發現list_s數值改變,而list_c數值沒有改變,而對list_c追加4,發現list_s數值未改變,而list_c數值改變了,那么對源list_s里面的[3,4]進行改變,看list_s和list_c數值會發生怎樣的變化,繼續往下看。
4、修改源list_s里面的[3,4]值,增加5,變成[3,4,5],發現源list_s改變,list_c數值也發生改變,而且,兩者更改的地方是一樣的,都變成了[3,4,5],如下圖所示。
5、那么修改list_c里面的[3,4,5]值,增加6,變成[3,4,5,6],發現list_c改變,源list_s數值也發生改變,而且,兩者更改的地方是一樣的[3,4,5,6],如下圖所示。
由以上兩步操作可以看出,不管是源list_s,還是list_c改變列表中嵌套的列表[3,4]的值時,源list_s和list_c都會發生改變,而且變化一樣。
從內存地址來看,如下圖所示。
綠色的為追加的內容,可以看出,進行淺拷貝之后,列表中嵌套的列表[3,4]指向的內容以及地址,并未發生改變,所以,不論[3,4]發生什么樣的改變,llist_s和list_c都會發生同樣的改變,而第一層的列表,list_s和list_c都是相互獨立的,兩者發生改變不會影響對方。
搞明白淺拷貝之后,深拷貝就很好理解了,深拷貝就是在內存中重新開辟一塊空間,不管數據結構有多復雜,只要數據發生改變,就重新開辟一塊內存空間把內容復制下來,直到最后一層,通俗點講就是,深拷貝就是重新定義一個變量,于之前的沒有半毛錢關系,所以更改里面的內容,原來的并不會發生改變。舉例說明,如下圖所示。
定義list_s=[1,2,[3,4]],而list_c進行深拷貝,初始值,兩者一樣,然后對list_s追加3,對list_c中的列中中的列表[3,4]追加5,發現,list_s為[1,2,[3,4],3], list_c為[1,2,[3,4,5]]彼此的變化并沒有影響對方。
以上是“Python如何實現深淺拷貝”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。