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

如何用Python将列表按负数、零、正数的顺序重新排列?

在Python中按负数、零、正数顺序重新排列列表元素

这里有两种实用的方法可以实现需求,且能保持同类元素在原列表中的相对顺序:

方法一:拆分拼接法

直接将原列表拆分成负数、零、正数三个子列表,再按要求顺序拼接,逻辑直观易懂:

a = [3, -5, 1, 0, -1, 0, -2]
# 分别筛选出负数、零、正数
negatives = [num for num in a if num < 0]
zeros = [num for num in a if num == 0]
positives = [num for num in a if num > 0]
# 按顺序拼接得到结果
result = negatives + zeros + positives
print(result)  # 输出: [-5, -1, -2, 0, 0, 3, 1]

方法二:自定义排序键法

利用Python内置的sorted()函数(或列表的sort()方法),通过自定义排序键指定元素优先级,一行代码就能完成:

明确权重写法

a = [3, -5, 1, 0, -1, 0, -2]
result = sorted(a, key=lambda x: 0 if x < 0 else 1 if x == 0 else 2)
print(result)  # 输出: [-5, -1, -2, 0, 0, 3, 1]

简洁版写法

利用布尔值在排序时被视为0/1的特性,简化键的定义:

a = [3, -5, 1, 0, -1, 0, -2]
result = sorted(a, key=lambda x: (x >= 0, x > 0))
print(result)  # 输出: [-5, -1, -2, 0, 0, 3, 1]

如果需要直接修改原列表而非生成新列表,使用list.sort()方法即可:

a = [3, -5, 1, 0, -1, 0, -2]
a.sort(key=lambda x: (x >= 0, x > 0))
print(a)  # 输出: [-5, -1, -2, 0, 0, 3, 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:05:29