📅  最后修改于: 2023-12-03 15:34:31.674000             🧑  作者: Mango
在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()
函数可以非常方便地对矩阵按行和按列进行排序。