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

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