對於自定義的類使用優先佇列,在入隊的時候需要根據類的某一屬性進行比較。
方法:使用過載方法__lt__,__lt__是python中用於進行特定比較的方法。
例如:
import queue
class person(object):
def __init__(self,name,score):
self.name = name
self.score = score
def __lt__(self, other):
return self.score > other.score
p1 = person("張三",15)
p2 = person("李四",23)
p3 = person("王五",12)
p4 = person("朱五",32)
que = queue.priorityqueue()
que.put(p1)
que.put(p2)
que.put(p4)
que.put(p3)
print(que.get().name)
print(que.get().name)
print(que.get().name)
print(que.get().name)
其中,__lt__定義了根據score屬性進行從大到小的排列。即當priorityqueue入隊乙個類例項的時候,會自動根據score屬性進行比較。 python優先佇列
q queue.priorityqueue q.put 呼叫的是heapq.heap item 而headpush 方法則是呼叫每個item的比較大小方法,預設是小的在頂端,所以是小頂堆。所以能用元組自定義插入順序,比如 2,item1 3,item2 所以q.put 2.item1 q.put 3...
python優先佇列
最近刷題的時候遇到了優先佇列。與一般的佇列 先進先出fifo 不同的是,優先佇列一般是最高端的優先出 即最大的先出 一開始想到的,可以用堆來維護乙個優先佇列。不過,python中的堆是乙個小根堆,即每次頂部pop出的都是最小值。這樣一來,我想到了41.資料流中的中位數,能不能把數字變負,寫入小根堆。...
python優先順序佇列 python 優先順序佇列
簡介 優先順序佇列是基於堆的,關於堆的時候可以參考文章堆,優先順序佇列就是入隊時,會分配乙個優先順序,之後出隊時,根據優先順序出列。如,入隊時 4,a 6,r 3 d 則出隊順序 6,r 4,a 3 d 優先順序佇列的python實現 class priorityqueue object def i...