我需要一种有效的方法来获取包含最多 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/