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