#賦值,指向同一記憶體位址
l1 = [1,2,3,4,5]
l2 =l1
(l1,l2)
print(id(l1),id(l2))
#淺copy,第一層互相獨立,建立了新的記憶體位址,第二層之後,都指向同一位址
l1 = [1,2,3,[4,5,6]]
l2 =l1.copy()
(l1,id(l1))
(l2,id(l2))
'第一層
')#第一層改變,copy不會改變
(l1)
(l2)
第二層')#
第二層開始,都是公用的,指向同乙個位址,改乙個都會變
深copy,兩個完全獨立,改變任意乙個的元素(無論是多少層),另乙個絕不會改變。
import copy#
先引入模組
l1 = [1,2,3,[4,5,6]]
l2 = copy.deepcopy(l1)#
(l1,id(l1))
(l2,id(l2))
l1[1] = '
第一層test
(l1,id(l1))
(l2,id(l2))
l1[3].insert(0,'
第二層test')
可以看出,完全獨立。
python學習筆記 (六)深copy 淺copy
在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用。賦值其實只是傳遞物件引用,引用物件id是一樣的。原始列表改變,被賦值的b也會做相同的改變。alist 1,2,3,a b b alist print...
python中深淺拷貝學習
好記性不如爛筆頭。對於常數的拷貝,類似於數值的位址是一定,當進行賦值時,先共用乙個記憶體,如果一方修改了內容,則該方的位址改變,從而使得兩個變數不再相同,即一方修改另一方不會修改。a 2 b a print a b format a,b result a 2,b 2 print id a id b ...
python學習日記
動態語言和靜態語言最大的不同,就是函式和類的定義,不是編譯的時候定義的,而是執行時動態建立的.直接在類中定義的是類屬性,如 class student object name student 例項屬性必須通過例項繫結。如self.age xx 根據python的規則,定義時千萬不要把類屬性和例項屬性...