学习指南 →

· Albion Gateway College

Python 课程练习:按分数降序、姓名升序怎样排序?

用原创记录说明元组排序键、稳定排序和原地排序的返回值,避免用一次 reverse 翻转所有字段。

先写你希望看到的次序

虚构记录为(B,80)、(A,80)、(C,90)。要求分数降序、同分姓名升序,目标顺序C、A、B。先在纸上写目标,防止实现出来什么就接受什么。

如果按(score,name)排序再整体reverse,姓名也会降序,80分中的B会排在A前面。reverse影响的是整个排序关系,不只影响第一个字段。

将字段方向编码进key

分数是普通数值时,可用key=lambda row: (-row[1], row[0])。负分数让高分排前,姓名仍按默认升序。若数据结构是字典,对应改用字段名。

Python排序是稳定的,同一key的记录保留原有相对顺序。也可以先按次要键升序,再稳定地按主要键降序;先次要后主要,顺序不能随意交换。

区分新列表与原地改变

sorted(records, key=...)返回新列表;records.sort(key=...)修改原列表并返回None。写records=records.sort(...)会把名字绑定到None,并不是得到排序结果。

自练加入两个同名同分但ID不同的记录,检查相对顺序;再加入缺失分数,先规定缺失值排哪里再设计key。大学编程辅导中,能解释需求和边界,比记住一行写法更有用。

参考资料

下一步

如需大学专业课程与 Tutorial 学习支持,请填写模块名称、学习目标和已尝试步骤。具体教学安排须确认,计分作业由学生独立完成。

继续阅读

学院在线咨询

欢迎咨询

你好,欢迎咨询!你是学生、招生代理、求职者,还是想申请成为导师?请告诉我你的咨询方向。

[email protected]