Python中排序主要用sort()和sorted(),前者原地修改列表返回None,后者返回新列表不改变原数据,根据是否需保留原顺序选择方法。

Python 中对 list 进行排序主要有两种方法:使用 sort() 方法和使用 sorted() 函数。它们都能实现排序,但有一些关键区别。
1. list.sort() 方法(原地排序)
list.sort() 是列表对象的一个方法,它直接修改原列表,不返回新列表,返回值为 None。
适合在不需要保留原始顺序时使用。
- 语法:
list.sort(key=None, reverse=False) - reverse=True 表示降序排列
- key 参数用于指定一个函数,按特定规则排序
示例:
立即学习“Python免费学习笔记(深入)”;
nums = [3, 1, 4, 1, 5] nums.sort() print(nums) # 输出: [1, 1, 3, 4, 5]words = ['banana', 'apple', 'cherry'] words.sort(key=len) # 按字符串长度排序 print(words) # 输出: ['apple', 'banana', 'cherry']
2. sorted() 函数(生成新列表)
sorted() 是一个内置函数,可以对任何可迭代对象排序,返回一个新的排序后的列表,原列表不变。
适合需要保留原始数据顺序的场景。
- 语法:
sorted(iterable, key=None, reverse=False) - 同样支持 key 和 reverse 参数
示例:
立即学习“Python免费学习笔记(深入)”;
nums = [3, 1, 4, 1, 5] new_nums = sorted(nums, reverse=True) print(new_nums) # 输出: [5, 4, 3, 1, 1] print(nums) # 原列表未变: [3, 1, 4, 1, 5]data = [('Alice', 25), ('Bob', 20), ('Charlie', 30)] sorted_data = sorted(data, key=lambda x: x[1]) # 按年龄排序 print(sorted_data) # 输出: [('Bob', 20), ('Alice', 25), ('Charlie', 30)]
3. 常见排序技巧
- 按字符串长度排序:
sorted(words, key=len) - 忽略大小写排序:
sorted(words, key=str.lower) - 按字典中的某个键排序:
sorted(dict_list, key=lambda x: x['age']) - 多条件排序:可以用元组作为 key 返回值,例如
key=lambda x: (x[0], x[1])
基本上就这些。根据是否要修改原列表来选择用 sort() 还是 sorted(),再配合 key 和 reverse 实现灵活排序。











