本文将详细介绍如何使用Python对二维数组进行降序排序,代码示例将会涵盖多个实际应用场景。
一、基本概念
为了更好地理解如何进行二维数组排序,我们先来回顾一下Python二维数组的基本概念。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
在上述代码中,我们创建了一个3行3列的二维数组。要注意的是,Python的二维数组其实是由多个一维数组组成,而不是由多行列表组成。因此,matrix[0]表示第一行,matrix[0][0]表示第一个元素,即1。
二、使用sorted函数实现降序排序
在Python中,我们可以使用sorted函数对数组进行排序,而排序的方式可以通过参数key来指定。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
sorted_matrix = sorted(matrix, key=lambda x: x[0], reverse=True)
print(sorted_matrix)
在上述代码中,我们指定了按照第一列的值进行降序排序。注意,key参数需要传入一个函数,这里使用了lambda表达式来简化代码。
三、应用场景举例
1. 对学生成绩进行排名
假设我们有一个学生成绩表格,其中第一列为学生姓名,第二列和第三列分别为语文和数学成绩。我们需要按照总分进行降序排名。
scores = [
['张三', 90, 80],
['李四', 85, 95],
['王五', 75, 85],
['赵六', 95, 70]
]
ranked_scores = sorted(scores, key=lambda x: x[1]+x[2], reverse=True)
for i, score in enumerate(ranked_scores):
print('第{}名: 姓名:{}, 总分:{}'.format(i+1, score[0], score[1]+score[2]))
在上述代码中,我们使用lambda表达式计算了总分,并按照总分进行降序排名。注意,enumerate函数可以返回一个索引-元素对,方便我们输出排名。
2. 按照字典序进行排序
假设我们有一个字符串二维数组,我们需要按照字典序进行排序。
words = [['apple', 'banana', 'orange'], ['pear', 'grape', 'peach']]
sorted_words = sorted(words, key=lambda x: x[0])
print(sorted_words)
在上述代码中,我们以第一个单词为关键字进行字典序排序,并输出结果。
3. 对多个条件进行排序
假设我们有一个音乐排行榜单,其中包含歌曲名称、歌手、时长、播放量。我们需要按照播放量和时长进行降序排名。
songs = [
['song1', 'singer1', 200, 100],
['song2', 'singer2', 300, 80],
['song3', 'singer3', 250, 120],
['song4', 'singer4', 280, 90],
]
sorted_songs = sorted(songs, key=lambda x: (-x[3], -x[2]))
for i, song in enumerate(sorted_songs):
print('第{}名: 歌曲:{}, 歌手:{}, 播放量:{}, 时长:{}'.format(i+1, song[0], song[1], song[3], song[2]))
在上述代码中,我们使用负数来实现降序排序,先按照播放量排序,再按照时长排序,并输出排序结果。