You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现以0开头、不优先排列负数的自定义列表排序?

定制排序实现方案

直接用Python内置的sorted()函数,通过自定义排序键就能实现你的需求,不用修改原有代码逻辑,只需要把生成的列表传入这个排序函数即可。

核心代码

def custom_sort(num_list):
    # 排序规则:0优先在前,其余按绝对值升序,同绝对值负数在前
    return sorted(num_list, key=lambda x: (x != 0, abs(x), x > 0))

验证示例

  • 示例1输入:[0, -2, 1, -3, 2, -4, 3, -5, 4, -6]
    输出:[0, 1, -2, 2, -3, 3, -4, 4, -5, -6]
  • 示例2输入:[0, 1, 5, 9, -2, 2, -5, -9, -1]
    输出:[0, -1, 1, -2, 2, -5, 5, -9, 9]
  • 示例3输入:[12, -12]
    输出:[-12, 12]

排序逻辑说明

排序键是一个三元组(x != 0, abs(x), x > 0),利用元组的逐位比较特性:

  1. 第一维度x != 0:0的该值为False(对应排序权重0),其他数为True(权重1),确保0始终排在最前面
  2. 第二维度abs(x):按数值的绝对值从小到大排序,保证整体是升序的逻辑
  3. 第三维度x > 0:同绝对值的数中,负数的该值为False(权重0),正数为True(权重1),所以负数排在正数前面

内容的提问来源于stack exchange,提问作者momo123321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:30:55