Python构造元组对列表进行复杂排序
Posted Channing Lewis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python构造元组对列表进行复杂排序相关的知识,希望对你有一定的参考价值。
对于列表排序时的一些复杂需求,例如需要同时满足:
1 非负数在前,负数在后
2 非负数从小到大,负数从大到小
我开始想到的是先分成非负数列表和负数列表,分别排序再合并。但是看到一种简洁写法,巧妙利用了元组来排序:
num_list = [-2, 8, 0, 3, -5, 9, -1]
print(sorted(num_list, key=lambda x: (x < 0, abs(x))))
输出:
[0, 3, 8, 9, -1, -2, -5]
因为False(等于0)比True(等于1)要小,所以非负数会排在前面;负数转绝对值后就相当于逆序,也符合需求。
以上是关于Python构造元组对列表进行复杂排序的主要内容,如果未能解决你的问题,请参考以下文章