[英]Sort a list by negative numbers, zeros, then positive Python
如何创建一个新列表,其中数字首先以负数排序,然后是 0,然后是 Python 中的正数?
例如,如果我有列表a = [3, -5, 1, 0, -1, 0, -2]
我希望新列表是[-5, -1, -2, 0, 0, 3, 1]
您可以设置排序键:
a.sort(key=lambda i:1 if i>0 else 0 if i==0 else -1)
您可以将其更改为按任何谓词拆分。
你可以做这样的事情
b = [x for x in a if x < 0] + [x for x in a if x == 0] + [x for x in a if x > 0]
根据数量和出现对数组进行排序
def func(array):
dic = {-1:[], 0:[], 1:[]}
for i in array:
if i<0:
dic[-1].append(i)
elif i==0:
dic[0].append(i)
elif i>0:
dic[1].append(i)
res = []
for i in [-1, 0, 1]:
res.extend(dic[i])
return res
arr = [3, -5, 1, 0, -1, 0, -2]
sol = func(arr)
print(sol) # [-5, -1, -2, 0, 0, 3, 1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.