按照绝对值从大到小排序,如果绝对值相同,则正数在前面
时间: 2023-05-25 11:04:15 浏览: 586
比较几个数的大小并排序
假设有一个列表 a,可以使用 sorted 函数和 lambda 表达式实现按照绝对值从大到小排序,如果绝对值相同,则正数在前面。
```python
a = [3, -5, 2, -7, 1, 0, 2]
sorted_a = sorted(a, key=lambda x: (-abs(x), x>=0))
print(sorted_a)
```
输出:[ -7, -5, 3, 2, 2, 1, 0]
lambda 表达式中,首先使用 -abs(x) 来将列表中的元素按照绝对值从大到小排序,由于 abs(x) 的结果都是正数,因此在前面加上负号。如果绝对值相同,再根据 x>=0 来判断是否是正数,True 排在 False 前面,从而让正数在前面。
阅读全文