在 Python 中,列表排序有两种常用方法:
1. list.sort()
方法
- 功能:原地排序(直接修改原列表)
- 语法:
list.sort(key=None, reverse=False)
- 参数:
key
:排序依据的函数(如key=len
按长度排序)reverse
:是否降序(True
为降序,False
为升序)
- 返回值:
None
(直接修改原列表) - 示例:
nums = [3, 1, 4, 1, 5, 9] nums.sort() # 原地排序 print(nums) # 输出: [1, 1, 3, 4, 5, 9]
2. sorted()
函数
- 功能:返回新排序列表(不修改原列表)
- 语法:
sorted(iterable, key=None, reverse=False)
- 参数:
iterable
:可迭代对象(如列表、元组、字符串等)key
:排序依据的函数reverse
:是否降序
- 返回值:新排序列表
- 示例:
nums = [3, 1, 4, 1, 5, 9] sorted_nums = sorted(nums) # 返回新列表 print(sorted_nums) # 输出: [1, 1, 3, 4, 5, 9] print(nums) # 原列表不变: [3, 1, 4, 1, 5, 9]
两种方法对比
特性 | list.sort() |
sorted() |
---|---|---|
是否修改原列表 | ✅ 是(原地排序) | ❌ 否(返回新列表) |
返回值 | None |
新排序列表 |
适用场景 | 需要直接修改原列表时 | 需要保留原列表时 |
性能 | 稍快(无需创建新列表) | 稍慢(需创建新列表) |
灵活性 | 只能用于列表 | 可用于任何可迭代对象 |
高级用法示例
-
按字符串长度排序:
words = ["apple", "banana", "cherry"] words.sort(key=len) # 按长度升序 print(words) # 输出: ['apple', 'cherry', 'banana']
-
按字典值排序:
data = [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 20}] sorted_data = sorted(data, key=lambda x: x["age"]) # 按年龄升序 print(sorted_data) # 输出: [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}]
-
多条件排序:
students = [("Alice", 25), ("Bob", 20), ("Charlie", 20)] students.sort(key=lambda x: (x[1], x[0])) # 先按年龄,再按名字 print(students) # 输出: [('Bob', 20), ('Charlie', 20), ('Alice', 25)]
总结
- 需要修改原列表 → 用
list.sort()
- 需要保留原列表 → 用
sorted()
- 复杂排序 → 使用
key
参数指定排序规则
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)