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构造元组对列表进行复杂排序的主要内容,如果未能解决你的问题,请参考以下文章

python按值的长度对字典进行排序

将列表转换为元组对[重复]

将列表组合成元组对 (x, y)

Python中使用元组对ndarray矩阵的某个维度进行选取和调序的操作

python中的list元组如何按照第二维元素排序

列表随机取2-元组列表