上一篇
Python sort()方法完全指南 - 列表排序详解与示例 | Python教程
- Python
- 2025-08-15
- 1661
Python sort()方法完全指南:列表排序详解
作者:Python编程专家
更新日期:2023年10月15日
1. sort()方法概述
Python中的sort()
是列表(list)对象的内置方法,用于对列表进行原地排序(即直接修改原列表,不返回新列表)。
基本语法:
list.sort(key=None, reverse=False)
参数说明:
- key:可选参数,用于指定排序依据的函数
- reverse:可选参数,默认为False(升序),设为True则为降序
2. 基本排序方法
对数字列表和字符串列表进行排序:
# 数字列表排序 numbers = [3, 1, 4, 1, 5, 9, 2, 6] numbers.sort() print(numbers) # 输出: [1, 1, 2, 3, 4, 5, 6, 9] # 字符串列表排序 fruits = ['banana', 'apple', 'date', 'cherry'] fruits.sort() print(fruits) # 输出: ['apple', 'banana', 'cherry', 'date']
3. 降序排序
使用reverse=True
参数实现降序排序:
# 数字降序排序 numbers = [3, 1, 4, 1, 5, 9, 2, 6] numbers.sort(reverse=True) print(numbers) # 输出: [9, 6, 5, 4, 3, 2, 1, 1] # 字符串降序排序 fruits = ['banana', 'apple', 'date', 'cherry'] fruits.sort(reverse=True) print(fruits) # 输出: ['date', 'cherry', 'banana', 'apple']
4. 自定义排序规则
使用key
参数实现自定义排序:
# 按字符串长度排序 words = ['apple', 'banana', 'cherry', 'date', 'fig'] words.sort(key=len) print(words) # 输出: ['fig', 'date', 'apple', 'banana', 'cherry'] # 按绝对值大小排序 numbers = [-5, 3, -2, 8, -1, 4] numbers.sort(key=abs) print(numbers) # 输出: [-1, -2, 3, 4, -5, 8] # 自定义函数排序 def get_second_element(item): return item[1] pairs = [(1, 5), (3, 2), (2, 8), (4, 1)] pairs.sort(key=get_second_element) print(pairs) # 输出: [(4, 1), (3, 2), (1, 5), (2, 8)]
5. 复杂数据结构排序
对字典列表等复杂数据结构进行排序:
# 字典列表按特定键排序 students = [ {'name': 'Alice', 'grade': 85}, {'name': 'Bob', 'grade': 92}, {'name': 'Charlie', 'grade': 78}, {'name': 'David', 'grade': 95} ] # 按成绩升序排序 students.sort(key=lambda x: x['grade']) print("按成绩升序:") for student in students: print(f"{student['name']}: {student['grade']}") # 按名字降序排序 students.sort(key=lambda x: x['name'], reverse=True) print("\n按名字降序:") for student in students: print(f"{student['name']}: {student['grade']}") # 多条件排序(先按成绩降序,成绩相同按名字升序) students.sort(key=lambda x: (-x['grade'], x['name'])) print("\n多条件排序:") for student in students: print(f"{student['name']}: {student['grade']}")
6. sort() vs sorted()
sort()方法
- 列表的内置方法
- 直接修改原列表
- 不返回任何值(返回None)
- 仅用于列表
- 语法:
list.sort()
sorted()函数
- Python的内置函数
- 不修改原列表,返回新列表
- 可对任何可迭代对象排序
- 返回排序后的新列表
- 语法:
sorted(iterable)
示例:
# 使用sort() original = [3, 1, 4, 2] original.sort() print(original) # 输出: [1, 2, 3, 4] # 使用sorted() original = [3, 1, 4, 2] new_list = sorted(original) print(original) # 输出: [3, 1, 4, 2] (原列表未改变) print(new_list) # 输出: [1, 2, 3, 4]
7. 常见问题解答
Q1: sort()方法能否用于元组或字典?
不能。sort()是列表的内置方法,只能用于列表。要对元组排序,需使用sorted()函数:
my_tuple = (3, 1, 4, 2) sorted_tuple = tuple(sorted(my_tuple)) print(sorted_tuple) # 输出: (1, 2, 3, 4)
Q2: 如何对中文字符串列表排序?
使用locale模块或第三方库如pyuca:
import locale locale.setlocale(locale.LC_COLLATE, 'zh_CN.UTF-8') chinese_words = ['北京', '上海', '广州', '深圳'] chinese_words.sort(key=locale.strxfrm) print(chinese_words) # 输出: ['北京', '广州', '上海', '深圳']
Q3: sort()方法的时间复杂度是多少?
Python的sort()方法使用TimSort算法,平均和最坏情况时间复杂度均为O(n log n)。
总结
Python的sort()方法是处理列表排序的强大工具。关键点:
- 使用
sort()
直接修改原列表,sorted()
返回新列表 - 通过
reverse=True
实现降序排序 - 使用
key
参数自定义排序规则 - 支持lambda表达式实现简洁的自定义排序
- 可对复杂数据结构(如字典列表)进行多条件排序
掌握sort()方法能显著提高数据处理效率,是Python编程必备技能。
相关主题
sorted函数
lambda表达式
列表操作
Python数据结构
算法优化
本文由HuaNan于2025-08-15发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://heyang.jltcw.com/20258236.html
发表评论