python學習日記 深淺copy

2022-09-03 01:27:12 字數 1095 閱讀 5195

#

賦值,指向同一記憶體位址

l1 = [1,2,3,4,5]

l2 =l1

print

(l1,l2)

print(id(l1),id(l2))

#

淺copy,第一層互相獨立,建立了新的記憶體位址,第二層之後,都指向同一位址

l1 = [1,2,3,[4,5,6]]

l2 =l1.copy()

print

(l1,id(l1))

print

(l2,id(l2))

'第一層

')#第一層改變,copy不會改變

print

(l1)

print

(l2)

第二層')#

第二層開始,都是公用的,指向同乙個位址,改乙個都會變

深copy,兩個完全獨立,改變任意乙個的元素(無論是多少層),另乙個絕不會改變。

import copy#

先引入模組

l1 = [1,2,3,[4,5,6]]

l2 = copy.deepcopy(l1)#

print

(l1,id(l1))

print

(l2,id(l2))

l1[1] = '

第一層test

'print

(l1,id(l1))

print

(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的規則,定義時千萬不要把類屬性和例項屬性...