python - 假设 n > k 如何从 n 个数字的列表中找到 k 个最大的数字

标签 python list max

我正在寻找一些 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/

相关文章:

python - 从列表中随机选择 50 个项目

c# - int[] 和 list<int> 之间的区别

python - 静态库和 SCons 的传递依赖

python - asyncio 收集产生的结果

python - VSCode/Pylint 在同一目录中找不到模块

list - F# 对列表中的所有整数求和

Python Pandas : Convert 2, 000,000 DataFrame 行到二进制矩阵 (pd.get_dummies()) 没有内存错误?

c# - 如何从 float 数组中找到最小值和最大值?

python - numpy.amax 中的一个键

3 个数字的 Javascript max() 函数