You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按数值降序获取列表中前K个元素的索引?

解决方案

可以用Python内置的sorted()函数结合enumerate()来实现,这是最简洁的写法:

a = [3,5,7,12,4,1,5]
k = 3
result = [idx for idx, val in sorted(enumerate(a), key=lambda x: (-x[1], x[0]))[:k]]
print(result)  # 输出: [3,2,1]

代码说明

  • enumerate(a)会将列表转换为(索引, 元素值)的元组序列,比如(0,3), (1,5), (2,7), ...
  • sorted()的key参数lambda x: (-x[1], x[0])起到两个作用:
    • -x[1]让元素按数值降序排列(对元素值取负后做升序排序,等价于原数值的降序)
    • x[0]作为次要排序依据,当元素值相同时,按索引升序排列,确保平局时取首次出现的索引
  • 最后通过切片[:k]取前K个元组,再提取其中的索引组成结果列表

内容的提问来源于stack exchange,提问作者S_S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:09:26