读书人

怎么给一个list排序 当按照第一个元

发布时间: 2013-01-06 15:44:47 作者: rapoo

怎样给一个list排序 当按照第一个元素升序排 第一个元素一样的话 按照第2个元素 降序排 ?
a = [(2,3),(4,1),(2,8),(2,1),(3,4)]

怎样遍历一个list 符合下列条件

1. 按照元组的第一个从小到大排序
2. 如果第一个相同 则按照元组第2个从大到小 排序




难点就是第2条

请问大家这怎么弄 ?

谢谢
[解决办法]
性能这玩意还是要用数据说话。

随手写了个:

import time

n = xrange(1000000)
x = zip(n, n)

start = time.time()
x.sort(key = lambda x: (x[0], -x[1]))
end = time.time()
print 'key', end-start

x = zip(n, n)
start = time.time()
x.sort(cmp=lambda x, y: x[0] - y[0] or y[1] - x[1])
end = time.time()
print 'cmp', end-start


输出:
key 2.34500002861
cmp 0.269000053406



key的代码确实优雅些,但不管从直观上,还是实测结果,都看不出来key更快。

读书人网 >perl python

热点推荐