我需要一种有效的方法来获取包含最多 15000 个实体的列表中的第 n 个最小数字及其索引(因此速度不是非常重要)。

遗憾的是,我不能使用 numpy 或任何其他非标准库。

我使用 Python 2.7

最佳答案

使用 heapq.nsmallest (和 enumerate 获取索引):

nums = [random.randint(1,1000000) for _ in range(10000)]

import heapq
import operator

heapq.nsmallest(10,enumerate(nums),key=operator.itemgetter(1))
Out[26]:
[(5544, 35),
 (1702, 43),
 (6547, 227),
 (1540, 253),
 (4919, 360),
 (7993, 445),
 (1608, 495),
 (5832, 505),
 (1388, 716),
 (5103, 814)]

关于python - 查找列表中第 n 个最小的数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21442460/

10-09 08:51