0
A
回答
1
您可以使用heapq.nsmalles
:
>>> import heapq
>>> l=[10, 12, 2, 5 ,15]
>>> print(heapq.nsmallest(2, l)) [1]
5
最堆的重要特徵是heap[0]
始終是最小的項目。使用heapq.heappop()
方法可以很容易地找到後續項目,其中 會彈出第一個項目並將其替換爲下一個最小項目( 需要O(log N)操作的操作,其中N是堆)
該nlargest()
和nsmallest()
函數是最合適的,如果你正試圖 找到一個相對較少的項目。如果您只是試圖找到單個最小的 或最大的項目(N = 1),則使用min()
和max()
會更快。類似地,如果N大約與集合本身的大小相同,則通常將其首先排序並採取分片(即, 使用sorted(items)[:N]
或sorted(items)[-N:]
)更快。應該注意的是,nlargest()
和nsmallest()
的實際 實現是自適應的,它會如何操作,並且 會以您的名義執行其中一些優化(例如,如果N接近於 ,則使用排序與輸入的大小相同)。 (參考文獻:蟒食譜第三版)
相關問題
- 1. 湊整小數蟒蛇
- 2. 獲取蟒蛇CSV文件的第二列整數
- 3. 找到第1000黃金(蟒蛇)
- 4. 查找第二個最小值 - 算法
- 5. 蟒蛇,從整數
- 6. 找到最小整數
- 7. 找到兩個整數之間的最大增量在列表中的蟒蛇
- 8. 分頁(第二級) - scrapy蟒蛇
- 9. 找到第二個最高有效位
- 10. 找到第二個最高值
- 11. 蟒蛇,datetime.date:二日
- 12. 蟒蛇非線性最小二乘擬合
- 13. 找到列表串 - 蟒蛇
- 14. 蟒蛇沒有找到pygame.locals
- 15. cxfreeze找不到libpyside,蟒蛇
- 16. 如何找到蟒蛇
- 17. 蟒蛇找不到GL
- 18. 蟒蛇找到位置
- 19. 蟒蛇找不到OpenCV的
- 20. 兩個小蟒蛇問題
- 21. 找到一個列表裏面蟒蛇
- 22. 蟒蛇小數比較
- 23. 與蟒蛇多個小數點
- 24. 查找列表第一最大的蟒蛇
- 25. 找到第k個最小元素
- 26. 查找數組中的最小值和第二小值Java
- 27. 蟒蛇調整Qpainter
- 28. 如何找到最沒有在列表中位數蟒蛇
- 29. 蟒蛇不會執行第二個條件,如果elif的
- 30. 跳過第二個字母的蟒蛇跳
'排序('10 12 2 5 15'.split(),反向=真)[1]' – Hackaholic 2014-11-06 17:49:34
排序是絕對不是無論如何要做到這一點的最佳方式,因爲它整理了整個清單 - 這是浪費。 – will 2014-11-06 17:51:44
@ will除非您評估您的確切用例的性能,並且意外地發現它是最有效的方式。 – moooeeeep 2014-11-06 17:53:42