Форум сайта python.su
Всем привет! Есть код как найти эти елементы, но как их поменять местами???
def FindMaxElement(mat): n = len(mat) if (n == 0): return Firstmax = mat[0][0] Secondmax = mat[n - 1][0] for i in range(1, n): for j in range(1, n): if (i == j): if (mat[i][j] > Firstmax): Firstmax = mat[i][j] if ((i + j) == (n - 1)): if (mat[i][j] > Secondmax): Secondmax = mat[i][j] print("First max element : ", Firstmax) print("Second max element: ", Secondmax) matrix = [[1, 2, 3, 4, 1], [5, 1, 7, 9, 6], [1, 2, 2, 3, 4], [5, 2, 7, 1, 8], [2, 1, 7, 1, 1]] FindMaxElement(matrix)
Отредактировано FishHook (Янв. 14, 2020 10:24:26)
Офлайн
matrix = [[1, 2, 3, 4, 1], [5, 1, 7, 9, 6], [1, 2, 2, 3, 4], [5, 2, 7, 1, 8], [2, 1, 7, 1, 1]] max_element = max(matrix[i][i] for i in range(len(matrix))) for i in range(len(matrix)): if i == max_element: matrix[i][i] = 'A' print matrix
Офлайн
FishHookСпасибо за отзыв, плюс в карму)) Ваш код меняет максимальный елемент на главной диагонали на любой произвольный, я видимо не совсем некорректно написал условие задачи: нужно поменять местами максимальный элемент с главной диагонали на максимальный элемент второстепенной диагонали. Буду очень благодарен за помощь.
Офлайн
Stanislav97задача сводится к моему решению. Вам надо по подобию найти максимальный элемент другой диагонали, и после этого сделать замену, но не на произвольное значение, а на найденное.
на максимальный элемент второстепенной диагонали. Буду очень благодарен за помощь.
Офлайн
Stanislav97Надо запомнить (i, j) максимального элемента на главной диагонали, потом запомнить (i, j) максимального элемента на побочной диагонали, а потом обменять их через переменную.
Есть код как найти эти елементы, но как их поменять местами?
Офлайн
переходим на другую диагональ
n = 0
max_element_second = max(matrix for j in range(len(matrix)))
for j in range(len(matrix)):
if ((i + j) == (n - 1)):
if j == max_element_second:
matrix = ‘B’
print(matrix)
не меняет даже максимальный элемент побочной диагонали на ‘B’
ничего не происходит, почему?
Офлайн
py.user.nextНужные мне значения(Firstmax, Secondmax) уже имеют свои координаты, как их вообще запомнить отдельно? Второй день в этом вопросе, уже понял как поменять диагонали, но не эти два максимальных елемента!
Офлайн
Stanislav97Добавить строкуif (mat[i][j] > Firstmax): Firstmax = mat[i][j]
if (mat[i][j] > Firstmax): Firstmax = mat[i][j] f_i, f_j = i, j
Stanislav97Добавить строкуif ((i + j) == (n - 1)): if (mat[i][j] > Secondmax): Secondmax = mat[i][j]
if ((i + j) == (n - 1)): if (mat[i][j] > Secondmax): Secondmax = mat[i][j] s_i, s_j = i, j
t = mat[f_i][f_j] mat[f_i][f_j] = mat[s_i][s_j] mat[s_i][s_j] = t
Отредактировано py.user.next (Янв. 14, 2020 15:50:37)
Офлайн
py.user.nextЗаработало!!! Помог, подсказал, выручил!!!! 5 строк кода решили проблему, спасибо тебе, добрый человек)
Офлайн