Сложение двух матриц

В Python матрица представляется как список списков (вложенный список), где каждый внутренний список — это строка. В этой статье разберём два способа сложить две матрицы одинакового размера: классический подход с вложенными циклами и более компактный — через списковое включение.

Что нужно знать

Перед изучением примера полезно понимать:

Например, запись X = [[1, 2], [4, 5], [3, 6]] описывает матрицу 3×2. Первую строку можно получить как X[0], а элемент первой строки, первого столбца — как X[0][0].

Способ 1. Сложение через вложенные циклы

# Program to add two matrices using nested loop

X = [[12,7,3],\
    [4 ,5,6],\
    [7 ,8,9]]

Y = [[5,8,1],\
    [6,7,3],\
    [4,5,9]]

result = [[0,0,0],\
         [0,0,0],\
         [0,0,0]]

# iterate through rows
for i in range(len(X)):
   # iterate through columns
   for j in range(len(X[0])):
       result[i][j] = X[i][j] + Y[i][j]

for r in result:
   print(r)

Вывод

[17, 15, 4]
[10, 12, 9]
[11, 13, 18]

Здесь используются два вложенных цикла for: внешний пробегает по строкам, внутренний — по столбцам. На каждом шаге складываются соответствующие элементы матриц X и Y, а результат записывается в матрицу result.

Способ 2. Сложение через списковое включение

# Program to add two matrices using list comprehension

X = [[12,7,3],\
    [4 ,5,6],\
    [7 ,8,9]]

Y = [[5,8,1],\
    [6,7,3],\
    [4,5,9]]

result = [[X[i][j] + Y[i][j]  for j in range(len(X[0]))] for i in range(len(X))]

for r in result:
   print(r)

Результат тот же. Здесь применяется вложенное списковое включение, которое в одну строку проходит по всем элементам и собирает сумму. Такая запись короче и при должной привычке читается легко, поэтому списковые включения стоит активно использовать в Python.