我正在嘗試使用自定義排序謂詞構(gòu)建堆。由于輸入的值屬于“用戶定義”類型,因此我無法修改其內(nèi)置比較謂詞。有沒有辦法做類似的事情:h = heapq.heapify([...], key=my_lt_pred)h = heapq.heappush(h, key=my_lt_pred)甚至更好的是,我可以將heapq函數(shù)包裝在自己的容器中,這樣就不需要繼續(xù)傳遞謂詞。
3 回答

子衿沉夜
TA貢獻1828條經(jīng)驗 獲得超3個贊
這兩個答案的局限性在于它們不允許將領(lǐng)帶視為領(lǐng)帶。在第一個中,通過比較項目來打破聯(lián)系,在第二個中,通過比較輸入順序來打破關(guān)系。讓領(lǐng)帶成為領(lǐng)帶會更快,而且如果領(lǐng)帶很多,這可能會帶來很大的不同。基于上面和文檔,尚不清楚是否可以在heapq中實現(xiàn)。奇怪的是,heapq不接受鍵,而在同一模塊中從它派生的功能卻接受。
PS:如果您點擊第一個評論中的鏈接(“可能重復(fù)...”),那么還有另一種定義le的建議,這似乎是一種解決方案。
添加回答
舉報
0/150
提交
取消