1. 程式人生 > >python中深拷貝,淺拷貝等重要的知識點

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

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]

*打個小廣告啊
若是需要什麼綠色軟體的可以點選關注下面公眾號,如你所想,如你所願!!!
這裡寫圖片描述