python list 重新排序
时间: 2025-01-09 20:48:17 浏览: 4
### 如何对Python列表进行重新排序
#### 使用内置函数 `sort()` 和 `sorted()`
Python 提供了两种主要方法来对列表中的元素进行排序:`list.sort()` 方法会就地修改原列表并对其进行排序;而 `sorted()` 函数则返回一个新的已排序列表副本,不会改变原始数据。
```python
# 原始无序列表
numbers = [5, 2, 9, 1, 5, 6]
# 使用 sort() 对列表进行升序排列
numbers.sort()
print(numbers)
# 使用 sorted() 创建新的有序列表
new_sorted_numbers = sorted([3, 1, 4, 1, 5, 9])
print(new_sorted_numbers)
```
这两种方式都可以接受可选参数 `reverse=True` 来实现降序排序[^1]。
#### 自定义键函数
当需要按照特定规则而非默认顺序来进行排序时,可以传递一个自定义的关键字参数 `key` 给上述两个函数之一。这个关键字应该指向一个能够接收单个输入项作为参数并返回用于比较的值的函数。
```python
words = ['apple', 'banana', 'cherry']
# 按照字符串长度从小到大排序
words_by_length = sorted(words, key=len)
print(words_by_length)
# 结合 lambda 表达式按单词最后一个字母排序
words_last_char = sorted(words, key=lambda word: word[-1])
print(words_last_char)
```
#### 利用第三方库 Pandas 进行复杂操作
对于更复杂的重排需求,比如基于多个条件或者处理结构化表格型的数据集,则可能需要用到像Pandas这样的外部库。通过将其视为类似于字典的对象,其中列名充当键,各单独列为对应的值,从而允许灵活的操作模式。
```python
import pandas as pd
dataframe = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [24, 18, 30],
})
# 多级索引排序
reordered_df = dataframe.sort_values(by=["age"], ascending=False)
print(reordered_df)
```
阅读全文