检索按值排序的值的索引的最符合Python的方式是什么?

检索按值排序的值的索引的最符合Python的方式是什么?,python,list,sorting,Python,List,Sorting,我有一个列表a=[1,5,2,8] 我需要一个函数,它将返回按其值排序的条目索引,即。 b=[3,1,2,0] 我想出了一个函数来实现这一点: def indices_sorted_by_val(a, reverse=True): return [ y[0] for y in sorted( [(i,a[i]) for i in range(len(a))], key=lambda x: x[1], reverse=reverse )] 但是它很凌乱,很难阅读。有没有更像蟒蛇的方法?

我有一个列表
a=[1,5,2,8]

我需要一个函数,它将返回按其值排序的条目索引,即。
b=[3,1,2,0]

我想出了一个函数来实现这一点:

def indices_sorted_by_val(a, reverse=True):
    return [ y[0] for y in  sorted( [(i,a[i]) for i in range(len(a))], key=lambda x: x[1], reverse=reverse )]
但是它很凌乱,很难阅读。有没有更像蟒蛇的方法?

先试试。。。
enumerate
将有所帮助。我投票反对一行,因为可读性很重要

a = [1, 5, 2, 8]

sorted_tuples = sorted(enumerate(a), key= lambda x: x[1], reverse=True)
print([index for index, value in sorted_tuples])

[i[0]表示已排序的i(枚举(a),key=lambda x:x[1],reverse=reverse)]
np.argsort(a)[::-1如果reverse否则无]
使用numpy方法。谢谢Martijn!将尝试numpy的argsort这是我在您发布此内容之前4分钟关闭此内容的原因。对不起,我没有及时看到它。