多目標賦值語句就是直接把所有提供的變數名都賦值給右側的物件。
>>> a = b = c = "spam" # 將字串"spam"同時賦值給a,b,c
>>> a,b,c
('spam', 'spam', 'spam')
>>>
上面的語句相當於下面的簡單賦值
>>> c = "spam"
>>> b = c
>>> a = b
>>> a, b, c
('spam', 'spam', 'spam')
>>>
在這裡只有乙個物件,由三個變數共享,全部指向記憶體內同乙個物件。這種賦值存在的問題就是:
i. 如果右邊的值是不可變物件,修改其中乙個變數,不影響其他變數
>>> a = b = 100 # 不可變物件
>>> b += 1 # 改變其中乙個值
>>> a, b # 不會影響另外變數的值
(100, 101)
>>>
ii. 如果右邊的值是可變物件,修改其中乙個變數,會影響其他變數
>>> a = b = # 同時將可變物件,列表,賦值給a,b
>>> id(a);id(b) # 可以看出,兩個變數的id號是一樣的
37796680
37796680
>>> a,b # a,b兩個變數同時變化
([42], [42])
>>>
iii.要避免上面的問題,可以單獨賦值來避免
>>> a =
>>> b =
>>> id(a);id(b) # 單獨賦值的話,兩者的id號不同
37796360
37811720
>>> a,b
(, [42])
>>>
iv. 或者使用深淺拷貝避免
>>> import copy
>>> a =
>>> b = copy.copy(a) # 通過淺拷貝來賦值
>>> id(a);id(b)
39263368
37796680
>>> a, b
(, [42])
>>>
iiv. 或者使用[:]來避免
>>> a =
>>> b = a[:]
>>> a, b
(, )
>>> id(a),id(b)
(37796360, 37811720)
>>> a,b
(, [42])
>>>
多目標優化中pareto
pareto解 一般地,多目標規劃問題 multi objective programming,mop 可以描述成如下形式 pareto最優解,也稱為帕累託效率 pareto efficiency 是指資源分配的一種理想狀態,假定固有的一群人和可分配的資源,從一種分配狀態到另一種狀態的變化中,在沒有...
多目標跟蹤中SORT演算法的理解
多目標跟蹤中sort演算法的理解 在跟蹤之前,對所有目標已經完成檢測,實現了特徵建模過程。1.第一幀進來時,以檢測到的目標初始化並建立新的 標註id。2.後面幀進來時,先到卡爾曼濾波器中得到由前面幀box產生的狀態 和協方差 求 所有目標狀態 與本幀檢測的box的iou,通過匈牙利指派演算法得到io...
Python增強賦值及共享引用注意事項
python中的增強賦值是從c語言中借鑑出來的,所以這些格式的用法大多和c一致,本身就是對表示式的簡寫,即二元表示式和賦值語句的結合,比如a b和a a b就是一致的,比如還有以下的增強賦值語句。a b a b a b a b a b a b a b a b a b a b a b a b 即增強賦...