优化函数来对元组列表进行排序

2024-04-25 06:11:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要按第一项降序排列元组列表,然后按升序按第二项排序。在

为此,我实现了以下函数,但我认为它可能更快。在

>>> compare = lambda a, b: -cmp(b[1], a[1]) if b[0] == a[0] else cmp(b[0], a[0])
>>> sorted([(0, 2), (0, 1), (1, 0), (1, 2)], cmp=compare)
[(1, 0), (1, 2), (0, 1), (0, 2)]

有可能优化吗?请参见与内置函数的比较:

^{pr2}$

Tags: lambda函数列表if排序else内置compare
2条回答

你觉得怎么样?在

compare = lambda a, b: cmp(b[0], a[0]) and cmp(a[1],b[1])

对我来说,使用键代替比较函数要快一些,而且可以说也更容易阅读:

sorted([(0, 2), (0, 1), (1, 0), (1, 2)], key = lambda x:(-x[0], x[1]))

这需要Python2.4或更高版本。在

相关问题 更多 >