Как удалить все элементы, идущие после максимального элемента?

Необходимо осуществить поиск максимального элемента и затем удалить все элементы идущие после максимального в двумерном массиве 3x3.

Мой код максимальный элемент находит, но я не знаю как удалить элементы после него:

matrix = [
    [3, 7, 5],
    [9, 8, 1],
    [6, 2, 4]
]
 
mx = matrix[0][0]
 
for row in matrix:
    mx_ = max(row)
    if mx_ > mx:
        mx = mx_

Что должно получиться в итоге:

matrix = [
    [3, 7, 5],
    [9, 0, 0],
    [0, 0, 0]
]

Ответы (2 шт):

Автор решения: Андрей Коробейников

В комментариях написали уже алгоритм, в коде примерно так можно реализовать, но думаю найдутся и одно двух строчные варианты)

def get_max(matrix):
    max_in_matrix = 0
    for row in matrix:
        max_in_row = max(row)
        if max_in_matrix < max_in_row:
            max_in_matrix = max_in_row
    return max_in_matrix

def reset_next(matrix, max_el):
    next_null = False
    for row in matrix:
        for i in range(len(row)):
            if next_null:
                row[i] = 0
            elif row[i] == max_el:
                next_null = True
            continue
    return matrix

max_el = get_max(matrix)
matrix = reset_next(matrix=matrix, max_el=max_el)
→ Ссылка
Автор решения: Jack_oS
matrix = [
    [3, 7, 5],
    [9, 8, 1],
    [6, 2, 4]
]

row_with_max = max(matrix, key=lambda x: max(x))  # строка с максимальным значением
i_max = matrix.index(row_with_max)                # индекс строки
j_max = row_with_max.index(max(row_with_max))     # индекс столбца
flat_index = i_max*len(matrix)+j_max              # индекс в плоском списке

и "забейте нулями" все, что идет после:

for i in range(len(matrix)):
    for j in range(len(matrix[0])):
        if flat_index < i*len(matrix)+j:
            matrix[i][j] = 0

теперь в matrix:

>>> matrix
[
    [3, 7, 5], 
    [9, 0, 0], 
    [0, 0, 0]
]
→ Ссылка