如何使用key参数按绝对值及负数优先规则对列表排序?
实现指定规则的列表排序
直接利用list.sort()方法的key参数,通过返回元组来实现多条件排序:
- 元组第一个元素为元素的绝对值,确保先按绝对值从小到大排序
- 元组第二个元素为元素本身,当绝对值相等时,负数(数值更小)会排在正数前面
具体代码如下:
arr = [1,3,-10, -4, 4,10,30, -30] arr.sort(key=lambda x: (abs(x), x)) print(arr) # 输出: [1, 3, -4, 4, -10, 10, -30, 30]
原理说明
Python中比较元组时会按顺序逐一比较元素:
- 先对比元组的第一个元素(绝对值),绝对值小的排在前面
- 当第一个元素相等时,再对比第二个元素(元素本身),由于负数的数值小于正数,所以会被排在前面
内容的提问来源于stack exchange,提问作者Ultima
相关产品推荐
相关产品推荐

