我正在寻找一些 Python 代码,它可以从未排序的 n
数字列表中返回 k
最大的数字。首先我想通过首先对列表进行排序来做到这一点,但这可能会变得非常庞大。
例如,我想从中找到 k
最大数字的列表是 list1
> list1 = [0.5, 0.7, 0.3, 0.3, 0.3, 0.4, 0.5]
这里 n = 7
如果 k = 3
,也就是说,如果我想从 7 个数字的列表中找到 3 个最大的数字,那么输出应该是 0.5、0.7、0.5
如何做到这一点?
最佳答案
Python 包含所有电池 - 使用 heapq
模块:)
from heapq import nlargest
data = [0.5, 0.7, 0.3, 0.3, 0.3, 0.4, 0.5]
print nlargest(3, data)
它也比对整个数组排序更快,因为它使用的是部分堆排序
关于python - 假设 n > k 如何从 n 个数字的列表中找到 k 个最大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17906949/