给定一个包含10个-100到100之间整数的列表,使用lambda函数对元素进行排序,使其结果为正数在前,从大到小排列,负数在后,从小到大排列
时间: 2024-10-18 14:10:18 浏览: 17
AWS-Lambda-S3-Event-Handler:Lambda函数,可为每个上传到S3存储桶的文件创建Elastic Transcoder作业
你可以使用Python的`sorted()`函数和`lambda`函数来实现这个需求。`lambda`函数在这里用于定义排序规则,即先按元素是否为正数分类(正数在前),然后在各自的类别内进行排序(正数从大到小,负数从小到大)。以下是具体的代码示例:
```python
import random
# 生成一个包含10个-100到100之间的随机整数的列表
numbers = [random.randint(-100, 100) for _ in range(10)]
# 使用lambda函数进行排序
sorted_numbers = sorted(numbers, key=lambda x: (x > 0, abs(x)), reverse=(True, False))
print(sorted_numbers)
```
这里的关键在于`key=lambda x: (x > 0, abs(x))`这一部分。`x > 0`会返回布尔值,表示元素是正数还是负数,`abs(x)`给出的是元素的绝对值,这样就实现了先正数后负数的顺序。`reverse=(True, False)`则是指定第一个类别(正数)按照降序排列,第二个类别(负数)按照升序排列。
阅读全文