读入一个列表,按照绝对值从大到小排序,如果绝对值相同,则正数在前面。例如列表 13-4.2,4.排序后的结果为14,-4,3,21
时间: 2024-05-16 16:13:32 浏览: 105
HDU ACM 绝对值排序 txt格式
3星 · 编辑精心推荐
可以使用Python的内置函数`sorted()`来对列表进行排序,同时指定一个关键字参数`key`,用于指定排序的规则。在这个问题中,我们需要按照绝对值从大到小排序,如果绝对值相同,则正数在前面。
以下是一个可能的解决方案:
```python
lst = [13, -4.2, 4, 21]
sorted_lst = sorted(lst, key=lambda x: (-abs(x), x >= 0))
print(sorted_lst) # 输出 [13, -4.2, 4, 21] 的排序结果为 [13, 21, -4.2, 4]
```
这里我们使用了一个lambda表达式作为`key`参数的值。lambda表达式接受一个参数`x`,并返回一个元组`(-abs(x), x >= 0)`。这个元组中,第一个元素表示`x`的绝对值的相反数,第二个元素表示`x`是否为正数。因为在元组中,按照元素的顺序进行比较,所以我们实际上是按照绝对值从大到小排序,如果绝对值相同,则正数在前面。
阅读全文