如何根据整数的绝对值对整数列表进行排序,以便正数获得更高的优先级 -
示例输入
lst = [1, -3, 3, -3, 12, 10]
预期输出
[1, 3, -3, -3, 10, 12]
我现在可以用这样的代码来完成它,但我对函数中的任意 0.1
感到困扰,想知道是否有更简洁的方法
我的代码
sorted(lst, key=lambda x: abs(x) if x >= 0 else abs(x) + 0.1)
# [1, 3, -3, -3, 10, 12]
最佳答案
另一种解决方案是使用元组作为排序键:
sorted(lst, key=lambda x: (abs(x), x < 0))
为了更好地理解它:
1 ~ (1, False) ~ (1, 0)
-3 ~ (3, True) ~ (3, 1)
3 ~ (3, False) ~ (3, 0)
-3 ~ (3, True) ~ (3, 1)
12 ~ (12, False) ~ (12, 0)
10 ~ (10, False) ~ (10, 0)
https://stackoverflow.com/questions/72490213/