【发布时间】:2019-11-13 14:06:46
【问题描述】:
假设我有一个如图所示的列表:
test= [19, 2, 8, 12, 8]
我把它排序为:
print(sorted([(val, idx) for (idx, val) in enumerate(test)], reverse = True))
输出是:
[(19, 0), (12, 3), (8, 4), (8, 2), (2, 1)]
我想提取前 4 个最大的数字。切片不起作用,因为我在列表中有重复项(8 在索引 2 和 4)
我期望的输出是: (19, 0), (12, 3), (8, 4), (8, 2)
还有其他方法可以完成这项工作吗?
【问题讨论】:
-
那么在排序前删除重复项?
-
要求是包含重复并获取最大元素。
-
如果你被允许使用 numpy,那么也许np.argpartition 是要走的路。
-
我相信我的问题没有正确地提出。为了更清楚,我将编辑问题