Я рекомендую использовать Numpy для этой задачи. Он содержит объекты Matrix / Array, которые значительно упрощают вашу задачу.
import numpy as np
Определите вашу матрицу, используя np.matrix()
, затем измените ее на np.array()
. Вы можете определить его с помощью массива прямо вверх, но с помощью объекта Matrix вы можете записать свои значения в строковом формате, в то время как Array принимает список списков, который может сбить с толку.
Я предлагаю matrix_max()
функция, которая принимает массив и перебирает строки и столбцы отдельно. Я дал ему имя, отличное от max
, потому что (1) это имя встроенной функции Python и (2) оно нам все равно нужно:)
Как видите, for
циклы итерируют сначала по строкам, а затем по столбцам (что совпадает со строками матрицы транспонирования). Функция max
здесь проверяет новую сумму строки / столбца на соответствие существующему максимальному значению и, наконец, возвращает сумму обоих.
def matrix_max(array):
max_row_sum = 0
for row in array:
max_row_sum = max(max_row_sum, sum(row))
max_col_sum = 0
for col in array.transpose():
max_col_sum = max(max_col_sum, sum(col))
return max_row_sum + max_col_sum
Используйте функцию в вашем примере матрицы:
m = np.matrix('3,6,9;1,4,7;2,8,9')
a = np.array(m)
print(matrix_max(a))
Распечатанный ответ: 44.