就為了盡快實現功能,效能可能不是很好
[[1, 2], [1, 3], [2, 3], [3, none], [3, 4], [4, 5]]
[[1, 2], [1, 3], [2, 3], [3, none], [3, 4], [4, 2]]
[5, 4, 3, 2, 1]
exception: 存在迴圈依賴: [[1, 2], [1, 3], [2, 3], [3, none], [3, 4], [4, 2]]
**如下
def
depend_services_order
(depend_list, already_list=none):
"""按照depend_services為service排序
時間有限,不整啥拓撲排序有向圖了,太磨嘰
1. 不依賴其他項的優先排序
2. 從待排序節點中刪除這些節點
1. 如果不在已排序佇列,並加入已排序佇列,將所有值為none
2. 在已排序佇列,忽略
3. 判斷
1. 已排序佇列長度等於總待排序佇列,遞迴結束
2. 遞迴呼叫1
3. 本輪沒有篩出來節點,但待排序佇列依然有值,則存在迴圈依賴,丟擲異常
parameters
----------
depend_list:list(list)
依賴佇列:[[a, b], [a, c], [b, c], [c, none]]
a依賴bc,b依賴c,c不依賴任何項
already_list:int
已排序好的佇列
returns
-------
"""if already_list is
none:
already_list =
# 當前佇列中所有的節點集合
all_set = set(j for i in depend_list for j in i if j is
notnone)
# 獲取所有依賴了其他節點的節點
depend_set =
# 本輪被篩出來的沒有依賴其他節點的節點
not_depend_set = all_set - depend_set
# 將節點加入已排序佇列
for i in not_depend_set:
if i not
in already_list:
# 本輪篩選完畢,依然剩下的所有節點,並將被曬出來的節點置為none
depend_list = [i if i[1] not
in not_depend_set else [i[0], none] for i in depend_list if i[0] in depend_set]
# 如果本輪沒有篩出來節點,但待排序佇列依然有值,則存在迴圈依賴,丟擲異常
if len(not_depend_set) == 0
and len(depend_list) > 0:
raise exception("存在迴圈依賴: {}".format(depend_list))
elif len(depend_list) == 0:
return already_list
else:
return depend_services_order(depend_list, already_list)
按照依賴關係排序
import copy import utils.functool utils.functool.settimeout timeout 15 def dependsonsort testfunnames,dependrelation 有個問題就是如果出現a依賴b,而b又依賴a就會出現問題 param...
依賴關係 關聯關係
一 依賴關係 a物件作為b物件的區域性變數或是方法形參的,b依賴於a,這時候我們稱a與b之間存在一種依賴關係 給土豪打 物件作為形式引數 void calltuhaowithphone czphone phone void sendmessagetodiaosi 1 什麼是引數依賴 當a物件作為另外...
關聯關係和依賴關係
關聯 一種結構關係,表現為乙個物件能夠獲得另乙個物件的是類引用並呼叫他的服務。關聯 association 表示兩個類之間存在某種語義上的聯絡。例如,乙個人為一家公司工作,一家公司有許多辦公室。我們就認為人和公司 公司和辦公室之間存在某種語義上的聯絡。在分析設計的類圖模型中,則在對應人類和公司類 公...