python中深拷貝,淺拷貝等重要的知識點

2021-08-28 01:13:10 字數 2346 閱讀 6647

python中的幾個比較重要的內容(初學者容易模糊)

1、python中自動化記憶體管理

a=10000

b=20000

a= a + b #發生了什麼事?(將30000賦值給a,10000將被**釋放)

c = a #發生了什麼事? (a和c同時繫結在30000同一物件上)

python中 關聯/繫結/引用的含義:

在python中,變數沒有型別

關聯/繫結/引用都是指乙個變數和乙個物件的關聯關係

*python的記憶體管理是自動化的, 即每個物件會記錄幾個變數引用自身,當引用的數量為0時此物件被銷毀,此種自動化記憶體管理的方式叫引用計數

2、continue和break的區別:

continue是用於迴圈語句(while,for)中,不再執行本次迴圈continue之後的語句,重新開始一次新的迴圈。 在while語句中執行continue,將會直接跳轉到while語句的真值表示式處重新判斷迴圈條件。在for迴圈語句中執continue語句,將會從可迭代物件中取下乙個元素,繫結變數後再次進行迴圈

break用於迴圈語句(while,for語句)中,用來終止當前迴圈語句的執行,break語句執行後,此迴圈語句break之後的語句將不再執行。break語句通常和if語句組合使用 break語句終止迴圈時else子句的語句將不會執行。break語句只能終止當前迴圈語句的執行,如果迴圈巢狀時,不會跳出巢狀的外重迴圈。

3、python中淺拷貝和深拷貝的含義

淺拷貝(shallow copy)

是指在複製過程中,只複製一層變數,不會複製深層變數繫結的物件的複製過程

示意:

>>> l = [3.1,3.2]

>>> l1 = [1,2,l]

>>> l2 = l1.copy() #淺拷貝

>>> print(l1)

[1, 2, [3.1, 3.2]]

>>> print(l2)

[1, 2, [3.1, 3.2]]

>>> l2[2][0] = 3.14

>>> l2

[1, 2, [3.14, 3.2]]

>>> l1

[1, 2, [3.14, 3.2]]

>>> l

[3.14, 3.2]

深拷貝(deep copy):

賦值物件及物件關聯的物件一起複製過程叫深拷貝

示例: >>> import copy

>>> l = [3.1,3.2]

>>> l1 = [1,2,l]

>>> l2=copy.deepcopy(l1)

>>> l2[2][0] = 3.14

>>> l1

[1, 2, [3.1, 3.2]]

>>> l2

[1, 2, [3.14, 3.2]]

>>> l

[3.1, 3.2]

4、幾個小知識點(個人覺得比較實用)

① 字串的文字解析方法:

s.split(sep=none) 將字串,使用sep作用分隔符分割s字串,返回分割後的字串列表,當不給定引數時,用空白字元作為分隔符分割。

s.join(iterable) 用可迭代物件中的字串,返回乙個中間用s進行分割的字串。

②列表推導式:

是用可迭代物件建立列表的表示式

作用:用簡易方法生成列表

語法:

[表示式 for 變數 in 可迭代物件]

>>> l = [i**2  for  i  in  range(1,10)]

>>> l

[1, 4, 9, 16, 25, 36, 49, 64, 81]

[ 表示式 for 變數 in 可迭代物件 if 真值表示式 ]

l = [i for i in range(1,10) if i%2==1]

l [1, 3, 5, 7, 9]

③列表推導式的巢狀:

語法:

[表示式 for 變數1 in 可迭代物件1 if 真值表示式1

for 變數2 in 可迭代物件2 if 真值表示式2 …]

示例:將[10,20,30]中的元素與列表[1,2,3]元素分別相乘,將得到的元素放於乙個列表中

l= [x +y

for x in [10,20,30]

for y in [1,2,3]

print(l)]

#[11,12,13,21,22,23.31.32.33]

python 淺拷貝 深拷貝

直接賦值 其實就是物件的引用 別名 淺拷貝 copy 拷貝父物件,不會拷貝物件的內部的子物件。深拷貝 deepcopy copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。usr bin python import copy a 1,2,3,4,a b 原始物件 b a 賦值,傳物...

python深拷貝 淺拷貝

在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用 一般有三種方法,alist 1,2,3,a b 1 直接賦值,傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變 alist 1,2,3,...

python 深拷貝 淺拷貝

淺拷貝是對於乙個物件的頂層拷貝 通俗的理解是 拷貝了引用,並沒有拷貝內容 深拷貝是對於乙個物件所有層次的拷貝 遞迴 拷貝字典 值相當於鍵的引用 所以copy.copy 為淺拷貝 淺拷貝對不可變型別和可變型別的copy不同 copy.copy對於可變型別,會進行淺拷貝 copy.copy對於不可變型別...