Строка и столбец матрицы с максимальными суммами элементов на Python

Дана матрица. Найти в ней строку с максимальной суммой элементов, а также столбец.

from random import random

matrix = []

for i in range(5):
    row = []
    for j in range(5):
        row.append(int(random()*10))
    matrix.append(row)

for row in matrix:
    print(row)

maxRow = 0
idRow = 0
i = 0
for row in matrix:
    if sum(row) > maxRow:
        maxRow = sum(row)
        idRow = i
    i += 1

print(idRow, '-', maxRow)

maxCol = 0
idCol = 0
for i in range(5):
    colSum = 0
    for j in range(5):
        colSum += matrix[j][i]
    if colSum > maxCol:
        maxCol = colSum
        idCol = i

print(idCol, '-', maxCol)

С комментариями:

# функция random генерирует случайные числа
# от 0 до 1
from random import random

# матрица - двумерный список - список,
# содержащий вложенные списки одинаковой длины
matrix = []

# за одну итерацию внешнего цикла формируется
# один вложенный список - строка матрицы
for i in range(5):
    # строка матрицы
    row = []
    # заполнение строки
    for j in range(5):
        # добавляется случайное число от 0 до 9 включительно
        row.append(int(random()*10))
    # строка добавляется в матрицу
    matrix.append(row)

# построчный вывод матрицы
for row in matrix:
    print(row)

# переменная для хранения максимальной суммы строки
maxRow = 0
# переменная для хранения индекса строки с максимальной суммой
idRow = 0
# индекс
i = 0
# для каждой строки в матрице ...
for row in matrix:
    # (Функция sum() возвращает сумму элементов переданного ей списка.)
    # Если сумма элементов строки больше значения maxRow,
    if sum(row) > maxRow:
        # то присвоить переменной maxRow эту сумму,
        maxRow = sum(row)
        # а в idRow сохранить индекс этой строки.
        idRow = i
    # увеличить индекс на 1
    i += 1

# вывод индекса строки матрицы с максимальной суммой и суммы
print(idRow, '-', maxRow)

# переменная для хранения максимальной суммы столбца
maxCol = 0
# переменная для хранения индекса столбца с максимальной суммой
idCol = 0
# перебор индексов столбцов
for i in range(5):
    # сумма текущего столбца
    colSum = 0
    # перебор индексов строк
    for j in range(5):
        # извлекается очередной элемент столбца, и добавляется к colSum,
        # при этом изменяется индекс строк (j), индекс столбца неизменен (i)
        colSum += matrix[j][i]
    # Если сумма элементов текущего столбца больше значения maxCol,
    if colSum > maxCol:
        # то записать значение первой переменной в вторую,
        maxCol = colSum
        # а индекс столбца сохранить в idCol
        idCol = i

# вывод индекса стобца и его суммы
print(idCol, '-', maxCol)

Пример выполнения:

[0, 8, 8, 4, 0]
[9, 6, 7, 1, 6]
[9, 6, 9, 0, 3]
[4, 4, 2, 7, 3]
[8, 8, 9, 4, 5]
4 - 34
2 - 35

  Python CSV поиск: эффективная обработка данных
Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x