Python小练习系列:学生信息排序(sorted + key函数)

💡Python小练习系列:学生信息排序(sorted + key函数)


一、题目描述

有一个学生信息列表,格式如下,每个元素是一个包含学生姓名和分数的元组:

python 复制代码
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

请实现以下功能:

  1. 按照姓名的字母顺序进行排序;
  2. 按照成绩从高到低进行排序。

二、解题思路

Python 的内置函数 sorted() 支持通过 key 参数传入排序规则:

  • key 接收一个函数,函数返回值将作为排序依据;
  • 对于降序排列,可配合 reverse=True 使用;
  • 元组 t[0] 表示姓名,t[1] 表示分数。

三、代码实现

✅ 1. 按姓名排序

python 复制代码
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

def by_name(t):
    return t[0]  # 取名字作为排序依据

L2 = sorted(L, key=by_name)
print("按姓名排序结果:", L2)

✅ 2. 按成绩从高到低排序

方法一:用 -t[1] 实现降序
python 复制代码
def by_score(t):
    return -t[1]  # 分数取负,越高排序越靠前

L2 = sorted(L, key=by_score)
print("按成绩排序结果:", L2)
方法二:配合 reverse=True
python 复制代码
L2 = sorted(L, key=lambda t: t[1], reverse=True)
print("按成绩排序结果(lambda写法):", L2)

四、运行结果

python 复制代码
按姓名排序结果: [('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
按成绩排序结果: [('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]

五、小结

  • sorted() 是处理列表排序的强大工具;
  • 配合 key 参数可以实现任意维度的排序逻辑;
  • 想要降序排序时,不仅可以在 key 中做负值处理,也可以直接用 reverse=True 参数,代码更简洁。

📌 练习价值: 本题考察了 Python 对元组列表的排序技巧,适合初学者掌握 sorted 的使用方式,为后续处理更复杂的数据结构打好基础。

相关推荐
知乎的哥廷根数学学派7 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
且去填词7 小时前
DeepSeek :基于 Schema 推理与自愈机制的智能 ETL
数据仓库·人工智能·python·语言模型·etl·schema·deepseek
人工干智能8 小时前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
databook8 小时前
当条形图遇上极坐标:径向与圆形条形图的视觉革命
python·数据分析·数据可视化
阿部多瑞 ABU8 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab8 小时前
VScode python插件
ide·vscode·python
知乎的哥廷根数学学派9 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
WangYaolove131410 小时前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派10 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
cnxy18811 小时前
Python爬虫进阶:反爬虫策略与Selenium自动化完整指南
爬虫·python·selenium