📜  Python程序对矩阵按行和按列进行排序(1)

📅  最后修改于: 2023-12-03 15:34:31.674000             🧑  作者: Mango

Python程序对矩阵按行和按列进行排序

在Python中,可以使用以下方法对矩阵按行和按列进行排序:

按行排序

对矩阵按行排序可以使用sorted()函数,其中key参数指定按照哪个元素排序。在这里,我们可以使用sum函数来指定按照行之和排序。例如,以下是一个按照行之和排序的例子:

matrix = [
    [3, 2, 1],
    [6, 5, 4],
    [9, 8, 7]
]

sorted_matrix = sorted(matrix, key=lambda row: sum(row))

print(sorted_matrix)

输出:

[[3, 2, 1], [6, 5, 4], [9, 8, 7]]

在这个例子中,矩阵按照每一行的和进行了排序。由于每一行的和相同,矩阵的顺序未改变。

如果我们想按照行之和的逆序排序,只需指定reverse=True

sorted_matrix = sorted(matrix, key=lambda row: sum(row), reverse=True)

print(sorted_matrix)

输出:

[[9, 8, 7], [6, 5, 4], [3, 2, 1]]

在这个例子中,矩阵按照行之和的逆序排序了。

按列排序

按列排序需要一些额外的处理。我们需要先将矩阵转置为按行排序,然后再将其转置回来。

首先,我们使用zip()函数将行转换为列。以下是一个按照每一列之和进行排序的例子:

matrix = [
    [3, 2, 1],
    [6, 5, 4],
    [9, 8, 7]
]

transposed_matrix = zip(*matrix)
sorted_transposed_matrix = sorted(transposed_matrix, key=lambda column: sum(column), reverse=True)
sorted_matrix = list(zip(*sorted_transposed_matrix))

print(sorted_matrix)

输出:

[(9, 6, 3), (8, 5, 2), (7, 4, 1)]

在这个例子中,我们首先使用zip(*matrix)将行转换为列,然后按照每一列之和进行排序并逆序排列,最后再使用zip(*sorted_transposed_matrix)将列转换为行并返回排序后的矩阵。

总的来说,Python 中使用sorted()函数和zip()函数可以非常方便地对矩阵按行和按列进行排序。