Подтвердить что ты не робот

Есть ли один код строки, чтобы найти максимальное значение в матрице?

Чтобы найти максимальное значение в матрице чисел, мы можем запрограммировать 5 строк для решения проблемы:

ans = matrix[0][0]
for x in range(len(matrix)):
    for y in range(len(matrix[0])):
        ans = max(ans, matrix[x][y])
return ans

Есть ли одно решение для этой проблемы? То, что я придумал, на самом деле довольно неудобно:

return max(max(matrix, key=max))

или

return max(map(max, matrix))
4b9b3361

Ответ 1

Вы можете использовать выражение генератора, чтобы найти максимальное значение в вашей матрице. Таким образом, вы можете не создавать полный список матричных элементов в памяти.

maximum = max(max(row) for row in matrix)

вместо понимания списка, как указано в предыдущем ответе здесь

maximum = max([max(row) for row in matrix])

Это от PEP (rationale раздел):

... у многих вариантов использования нет необходимости создавать полный список, созданный в Память. Вместо этого им нужно только перебирать элементы по одному на время.

...

Выражения генератора особенно полезны для таких функций, как sum(), min() и max(), которые уменьшают итерируемый ввод до единственного значения

...

Ускорение выражений генератора значительно улучшается в сочетании с редукционными функциями, такими как sum(), min() и max().

Кроме того, взгляните на эту публикацию SO: Выражения генератора и понимание списков.

Ответ 2

По матрице я предполагаю, что вы имеете в виду 2d-список.

max([max(i) for i in matrix])

Ответ 3

с помощью numpy.amax:

import numpy as np
>>> my_array
array([[1, 2, 3],
       [9, 8, 6]])
>>> np.amax(my_array)
9

Ответ 4

Вы также можете сгладить свой массив:

from itertools import chain

flatten = chain.from_iterable

max(flatten(matrix))