在Python中,如何获取列表中5个最大值的索引?
In Python, how can I get the indices of the 5 greatest values of a list?
我有一个简单的清单:
a = [8, 5, 2, 20, 13, 14, 17, 13, 15, 21]
我可以得到列表中的 5 个最大值:
sorted(a)[-5:]
我怎样才能得到列表中 5 个最大值的 指数 ?
因此,列表中的 5 个最大值是 [14, 15, 17, 20, 21]
,它们位于索引 [9, 3, 6, 8, 5]
处。我确信有多种策略可以考虑是否存在重复值,如果它们接近其他重要值,可能会给出它们的索引。
你可以这样做:
[a.index(x) for x in sorted(a)[-5:]]
访问文档并检查 index
函数。
len(sorted(a)) - 1
这将为您提供最大元素的索引。
len(sorted(a)) - 2
然后会给你第二大元素等等
你可以试试这个:
[x[0] for x in sorted(enumerate(a), key=lambda x: x[1])[-5:]]
好吧,这部分取决于您的列表中是否有重复值。
如果没有重复值,我认为最简单的答案可能是按照您提到的方式获取最大值,然后对于每个值,使用 index
找到该值的索引列表方法:[1,2,3].index(3)
简答:
map(itemgetter(0), sorted(enumerate(lst), key=itemgetter(1), reverse=True))[:5]
作为函数:
from operator import itemgetter
def get_top_indices(lst, qnt=5):
return map(itemgetter(0), sorted(enumerate(lst), key=itemgetter(1), reverse=True))[:qnt]
示例:
>>> get_top_indices([8, 5, 2, 20, 13, 14, 17, 13, 15, 21])
[9, 3, 6, 8, 5]
a = [8, 5, 2, 20, 13, 14, 17, 13, 15, 21]
b = sorted(a)[-5:]
c = [i for i , x in enumerate(a) if x in b]
我有一个简单的清单:
a = [8, 5, 2, 20, 13, 14, 17, 13, 15, 21]
我可以得到列表中的 5 个最大值:
sorted(a)[-5:]
我怎样才能得到列表中 5 个最大值的 指数 ?
因此,列表中的 5 个最大值是 [14, 15, 17, 20, 21]
,它们位于索引 [9, 3, 6, 8, 5]
处。我确信有多种策略可以考虑是否存在重复值,如果它们接近其他重要值,可能会给出它们的索引。
你可以这样做:
[a.index(x) for x in sorted(a)[-5:]]
访问文档并检查 index
函数。
len(sorted(a)) - 1
这将为您提供最大元素的索引。
len(sorted(a)) - 2
然后会给你第二大元素等等
你可以试试这个:
[x[0] for x in sorted(enumerate(a), key=lambda x: x[1])[-5:]]
好吧,这部分取决于您的列表中是否有重复值。
如果没有重复值,我认为最简单的答案可能是按照您提到的方式获取最大值,然后对于每个值,使用 index
找到该值的索引列表方法:[1,2,3].index(3)
简答:
map(itemgetter(0), sorted(enumerate(lst), key=itemgetter(1), reverse=True))[:5]
作为函数:
from operator import itemgetter
def get_top_indices(lst, qnt=5):
return map(itemgetter(0), sorted(enumerate(lst), key=itemgetter(1), reverse=True))[:qnt]
示例:
>>> get_top_indices([8, 5, 2, 20, 13, 14, 17, 13, 15, 21])
[9, 3, 6, 8, 5]
a = [8, 5, 2, 20, 13, 14, 17, 13, 15, 21]
b = sorted(a)[-5:]
c = [i for i , x in enumerate(a) if x in b]