给定一个包含 10 个[-100, 100] 之间整数的列表,使用 lambda 函数对列表元素进行排序,使输出结果为正数在前,从大到小排列,负数在后,从小到大排列。
时间: 2024-10-20 17:16:02 浏览: 22
python 求一个列表中所有元素的乘积实例
5星 · 资源好评率100%
你可以使用 Python 的 `sorted()` 函数和 `lambda` 表达式来实现这个需求。`lambda` 表达式允许你在一行内定义简单的匿名函数,这里我们可以定义一个函数来作为排序的关键字,这个函数会先判断每个数字是否为正数,如果是,则保持原样;如果不是,则取其绝对值并返回,这样可以保证负数按绝对值从小到大排在前面,而正数则按原来的大小从大到小排。
以下是具体的代码示例:
```python
numbers = [random.randint(-100, 100) for _ in range(10)] # 创建一个包含10个随机整数的列表
sorted_numbers = sorted(numbers, key=lambda x: (x > 0, abs(x)), reverse=True)
```
在这个代码中,`key=lambda x: (x > 0, abs(x))` 定义了一个排序规则,首先看数字是否大于0,如果大于0(True),则保持原顺序(reverse=False默认情况下是降序),若不大于0,则按照绝对值(abs(x))升序排序。由于Python的元组比较规则,True 排在 False 前面,所以正数会被排在前面。
阅读全文