找到第二个最小整数(python)

时间:2014-11-06 17:44:40

标签: python sorting

除了sort()之外还有其他方法可以找到此行中的第二个最小整数:

10 12 2 5 15 

1 个答案:

答案 0 :(得分: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接近,则使用排序 与输入相同的大小)。 (参考: python cookbook 3rd edition