实用科技屋
霓虹主题四 · 更硬核的阅读氛围

Python排序方法实用示例,轻松搞定数据整理

发布时间:2026-01-01 13:10:41 阅读:291 次

常见的排序方法与Python实现

在日常处理数据时,排序是再常见不过的操作。比如你有一堆学生的考试成绩,想按分数从高到低排列;或者需要把商品按价格升序展示。Python 提供了多种简单高效的排序方式,用起来非常顺手。

最基础也最常用的两种方法是 sort()sorted()。虽然只差一个字母,但用法和效果略有不同。

原地排序:list.sort()

sort() 是列表对象自带的方法,直接修改原列表,不返回新列表。适合你不需要保留原始顺序的场景。

scores = [85, 91, 78, 96, 88]
scores.sort(reverse=True)
print(scores) # 输出:[96, 91, 88, 85, 78]

这里 reverse=True 表示降序排列,如果设为 False 或省略,则默认升序。

生成新列表:sorted()

如果你希望保留原数据不变,只是得到一个排好序的新列表,sorted() 更合适。它适用于任何可迭代对象,不只是列表。

prices = (39, 19, 59, 29, 49)  # 元组
sorted_prices = sorted(prices)
print(sorted_prices) # 输出:[19, 29, 39, 49, 59]
print(prices) # 原元组不变:(39, 19, 59, 29, 49)

按自定义规则排序

有时候排序不能只看数值大小。比如你有一个学生名单,每个元素是包含姓名和成绩的元组,你想按成绩排序。

students = [('小明', 85), ('小红', 92), ('小亮', 78)]
students_sorted = sorted(students, key=lambda x: x[1], reverse=True)
print(students_sorted) # 输出:[('小红', 92), ('小明', 85), ('小亮', 78)]

这里的 key 参数指定排序依据,lambda x: x[1] 表示按每个元组的第二个元素(成绩)排序。

也可以按字符串长度排序,比如整理一堆用户名:

names = ['Alice', 'Bob', 'Charlie', 'David']
sorted_names = sorted(names, key=len)
print(sorted_names) # 输出:['Bob', 'Alice', 'David', 'Charlie']

使用 operator 模块简化操作

当处理更复杂的数据结构,比如字典列表时,可以借助 operator 模块中的 itemgetterattrgetter

from operator import itemgetter

products = [
{'name': '手机', 'price': 3999},
{'name': '耳机', 'price': 199},
{'name': '平板', 'price': 2999}
]
sorted_products = sorted(products, key=itemgetter('price'))
print(sorted_products)

输出结果会按照价格由低到高排列,代码看起来也更清晰。