在日常生活中,我们经常要处理各种列表,比如购物清单、学生成绩、每月开支记录。当数据一多,手动排顺序就容易出错还费时间。这时候,用Python写几行代码就能快速完成排序,既准确又省力。
常见的排序方法:sort() 和 sorted()
Python 提供了两种最常用的排序方式:list.sort() 和 sorted()。它们看起来差不多,但有一点关键区别。
list.sort() 是直接修改原列表,适合你不需要保留原始顺序的情况。比如整理一周的支出金额:
expenses = [120, 85, 200, 60, 150]
expenses.sort()
print(expenses) # 输出:[60, 85, 120, 150, 200]
而 sorted() 不改变原列表,会返回一个新的排好序的列表。如果你只想看看排序结果,又不想动原始数据,这就很合适。
scores = [88, 95, 76, 92, 81]
sorted_scores = sorted(scores)
print(sorted_scores) # 输出:[76, 81, 88, 92, 95]
print(scores) # 原数据不变:[88, 95, 76, 92, 81]
倒序排列也很简单
有时候我们需要从高到低排,比如查看销量最高的商品。只要加上 reverse=True 参数就行。
products = ['牙膏', '洗发水', '纸巾', '洗衣液']
sales = [240, 310, 180, 280]
# 按销量从高到低排序产品
sorted_products = [p for _, p in sorted(zip(sales, products), reverse=True)]
print(sorted_products) # 输出:['洗发水', '洗衣液', '牙膏', '纸巾']
按字符串长度排序名字
家里几个孩子的名字想按字数长短排?用 key 参数指定排序依据即可。
names = ['小明', '李子轩', '王芳', '陈一帆']
names.sort(key=len)
print(names) # 输出:['小明', '王芳', '陈一帆', '李子轩']
key 参数非常灵活,可以配合函数自定义排序规则。比如按成绩后三位数字排序,避免同分时顺序混乱。
student_ids = [202301089, 202301067, 202301101]
sorted_ids = sorted(student_ids, key=lambda x: x % 1000)
print(sorted_ids) # 按后三位排序:[202301067, 202301089, 202301101]
这些排序方法不只能用在数字上,文本、日期甚至复杂对象都能处理。学会这几招,日常数据整理效率立马提升一大截。