读书人

python数据排序解决思路

发布时间: 2012-05-16 11:12:12 作者: rapoo

python数据排序
给出一个list:
list = [1,2,9,5,6]
list.sort()
list.reverse()
print list
这个是实现了list从大到小的排序,但如果list的原下标跟着数据一起移动,如经过排序后的下标为[2,4,3,1,0],这要如何实现呢?谢谢各位大侠!

[解决办法]
python的sort有一个key选项。

Python code
>>> l =[1,2,9,5,6]>>> index = range(len(l))>>> index.sort(key=lambda i: l[i]) # 从小到大>>> index74: [0, 1, 3, 4, 2]>>> index.sort(key=lambda i: -l[i]) # 从大到小>>> index75: [2, 4, 3, 1, 0]
[解决办法]
数据量不大的话,下标加入数据里吧,不然你得排2次也容易搞乱(譬如你先就地排数据,才想去排下标就不行)
>>> lst = [1,2,9,5,6]
>>> new = sorted(enumerate(lst), key=lambda x: -x[1])
>>> new
[(2, 9), (4, 6), (3, 5), (1, 2), (0, 1)]
>>> zip(*new)
[(2, 4, 3, 1, 0), (9, 6, 5, 2, 1)]
>>>

读书人网 >perl python

热点推荐