除了sort()之外还有其他方法可以找到此行中的第二个最小整数:
10 12 2 5 15
答案 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 )