2545. 根据第 K 场考试的分数排序 - 力扣(LeetCode)
班里有 m 位学生,共计划组织 n 场考试。给你一个下标从 0 开始、大小为 m x n 的整数矩阵 score ,其中每一行对应一位学生,而 score[i][j] 表示第 i 位学生在第 j 场考试取得的分数。矩阵 score 包含的整数 互不相同 。
另给你一个整数 k 。请你按第 k 场考试分数从高到低完成对这些学生(矩阵中的行)的排序。
思路:
按某一列排序。从大到小(反序)。
题解:
class Solution:
def sortTheStudents(self, score: List[List[int]], k: int) -> List[List[int]]:
score.sort(key = lambda s:-s[k])
return score
分析:
【按某列排序】对于score.sort(key=lambda s: -s[k]),当key参数指定为一个函数时,sort()将使用该函数生成的键来排序列表,即根据列表每个元素的第k个值来进行排序。
s[k]中,s代表列表中的每个子列表,而k表示列的索引,即要引用的元素在每个子列表中的位置。s[k]引用了列表中的每个子列表的第k列元素。
注意,该方法排序的顺序是从小到大。
通过取负值 -s[k],我们反转了排序顺序,使得较大的值在前面,较小的值在后面。
另一个例子:
假设我们有一个包含学生信息的列表 students,每个学生的信息都是一个元组,包含了学生的姓名、年龄和成绩。我们想要根据学生的成绩来对列表进行排序。
示例代码:
students = [("Alice", 20, 90), ("Bob", 18, 85), ("Charlie", 19, 95)]
students.sort(key=lambda s: -s[2])
print(students)
这里我们使用 lambda 函数 lambda s: -s[2] 来作为 key 函数,表示根据每个学生的成绩(元组中的第3个元素)进行排序。
结果输出如下:
[('Charlie', 19, 95), ('Alice', 20, 90), ('Bob', 18, 85)]