sorted函数怎么先正序再逆序
时间: 2024-09-11 12:01:24 浏览: 38
在Python中,`sorted()` 函数默认按照升序对序列进行排序。如果你想先正序再逆序排列元素,你可以通过两次调用 `sorted()` 并结合列表推导式或者生成器表达式来实现。
1. 列表推导式示例:
```python
original_list = [3, 1, 4, 1, 5, 9]
# 先正序排序
sorted_list_1 = sorted(original_list)
# 再逆序排序
sorted_list_2 = sorted(sorted_list_1, reverse=True)
# 或者一次性完成两个步骤
final_list = [x for x in original_list if x not in sorted_list_1] + sorted_list_1[::-1]
print(final_list) # 输出: [1, 1, 3, 4, 5, 9]
```
2. 生成器表达式示例(如果原列表很大,不想复制整个列表):
```python
original_list = [3, 1, 4, 1, 5, 9]
# 先正序生成器
sorted_gen = (x for x in original_list)
# 再逆序生成器
reversed_gen = (y for y in reversed(sorted_gen))
# 将两部分合并,注意这里不会立即排序,而是返回一个迭代器
final_iter = chain(reversed_gen, sorted_gen)
# 转换为列表得到最终结果
final_list = list(final_iter)
print(final_list) # 同样输出: [1, 1, 3, 4, 5, 9]
```
阅读全文