2011-02-10 2 views
0

Как отсортировать список индексов по тому, на что они указывают в python?сортировка списка индексов

У меня есть

indices = list(range(len(mylist))) 

Я хочу, чтобы отсортировать показатели, так что если a предшествует b индексов тогда mylist[a] > mylist[b].

ответ

0

Python 2.6+, самый элегантный ответ:

indices.sort(key = lambda x:mylist[x], reverse = True) 
3
indicies.sort(lambda x,y:mylist[x]-mylist[y]) 
+0

мне нужно импортировать что-то, чтобы получить своего рода работу делать? –

+0

См. Мои правки, извините. Сортировка - это функция списка – dfb

+0

Кроме того, что, если mylist - это список numpy float? Тогда мне нужна функция, возвращающая целое число. Is 'int (numpy.sign (...))' лучшее, что я могу сделать? –

1

Кроме того, позвольте мне добавить следующий фрагмент в качестве ответа, используя информацию, представленную в исходном вопросе ...

Я хочу, чтобы отсортировать индексы так, что если А предшествует Ь в индексы, тогда mylist [a]> mylist [b].

... и дополнительная информация у вас в комментарии

Кроме того, что если MyList список Numpy поплавки?

Тогда вы можете просто сделать:

In [2]: import numpy 

In [3]: a = numpy.asarray([-1, 2.73, 15.827, -8.48, 9, 13, 15, 3.22, 0, -1, 1]) 

In [4]: indices = a.argsort()[::-1] 
Out[4]: array([ 2, 6, 5, 4, 7, 1, 10, 8, 9, 0, 3]) 

In [5]: a[indices] 
Out[5]: 
array([ 15.827, 15. , 13. , 9. , 3.22 , 2.73 , 1. , 
    0. , -1. , -1. , -8.48 ]) 
+0

Интересно, спасибо! –

Смежные вопросы