python - 列表中最大的 n 个元素的项目和索引

标签 python python-3.x list numpy sorting

我有一个数组:

arr = [23,34,2,55,5,13,​​44,3]

我想保存 n 个最大的数字及其索引。
例如,对于 n = 2,我想要

[(55,3), (44,6)]

我找不到一个简单的方法来做到这一点.. 我只找到了如何使用 nlargest 获取 n 个最大的项目或使用 argpartition 获取 n 个最大的索引。

最佳答案

免责声明:不是 numpy 解决方案 - 您可以结合使用 enumeratesorted、生成器理解和列表切片:

n = 3
s = list(sorted( ((v,i) for i,v in enumerate([23,34,2,55,5,13,44,3]) ),reverse = True))[:n]

print(s)

输出:

 [(55, 3), (44, 6), (34, 1)]

独库:

生成器用于翻转枚举产生的索引和值,切片减少结果量。

关于python - 列表中最大的 n 个元素的项目和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55600085/

相关文章:

c# - Resharper 说我不应该使用 List<T>

python - 替换作为参数传递的列表的内容

python - sklearn make_scorer 的输入形状错误 need_proba=True

python - 如何通过使用将参数保留在同一列中的第一个和最后一个来删除 pandas df 列中的重复值

python-3.x - 网络驱动程序异常 : Message: unknown error: bad inspector message error while printing HTML content using ChromeDriver Chrome through Selenium Python

python - 从列表中的每个值中提取第一个单词

.net - List.Contains 基于列表项的属性

python - 如何使用 django 和/或 flask 强制读取 Postgres 中的只读副本?

python - 分配 pandas 数据框列 dtypes

python - 在列表中递增列表(封装列表)