Сложение двух матриц
В Python матрица представляется как список списков (вложенный список), где каждый внутренний список — это строка. В этой статье разберём два способа сложить две матрицы одинакового размера: классический подход с вложенными циклами и более компактный — через списковое включение.
Что нужно знать
Перед изучением примера полезно понимать:
Python: цикл for — цикл
forи итерацияPython: список (list) — работа со списками
Python: list comprehension — списковые включения
Например, запись 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.