首页 > 编程知识 正文

Python二维数组降序排序

时间:2023-11-19 18:31:26 阅读:293044 作者:FMYL

本文将详细介绍如何使用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]))

在上述代码中,我们使用负数来实现降序排序,先按照播放量排序,再按照时长排序,并输出排序结果。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。