攝影或3C

Python: 淺拷貝(shallow copy) vs 深拷貝(deep copy),什麼時候需要用深拷貝? import copy ; b = copy.deepcopy(a)

為什麼需要copy?

b=a ,將a賦值給b

一般人會以為已經copy了一份

實際上a, b兩變數共享同一個內存地址

b一旦變更

會影響到a也一起變更

 

上例 a = [1, 2, 3]

b = a.copy() #對a進行淺拷貝:

b.append(4)

對b進行了變更

a仍是原本的[1, 2, 3]

沒有影響到

 

a = [[1, 2, 3], {‘a’: 1, ‘b’: 2}]

a為一個list

list中的元素有list, dict

而非 整數,浮點數,字串 (不可變類型)

一樣做淺拷貝的動作: 

對b[0]做了變更

一併影響到a

這時候就需要使用深拷貝(deep copy)

b = copy.deepcopy(a)

推薦hahow線上學習python: https://igrape.net/30afN

 

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡