Произведение матриц Python

Заданы две целочисленные матрицы A и B. Матрица A состоит из N строк и M столбцов, Матрица B состоит из M строк и P столбцов. Требуется вычислить произведение данных матриц AB. Входные данные Первая строка входного файла INPUT.TXT содержит три натуральных числа N, M и P. Далее следует описание матриц A и B. Матрица A состоит из N строк по M целых чисел. Матрица B состоит из M строк по P чисел. Матрицы отделены друг от друга пустой строкой. Все числа во входных данных не превышают 100 по абсолютной величине. Выходные данные В выходной файл OUTPUT.TXT выведите матрицу, полученную в результате произведения AB.


Мой код:

n, m, p = map(int, input().split())
X = [list(map(int, input().split())) for i in range(n)]

input()
Y = [list(map(int, input().split())) for j in range(m)]

result = [[sum(a * b for a, b in zip(X_row, Y_col)) for Y_col in zip(*Y)] for X_row in X]

for i in range(m):
    for j in range(p):
        print(result[i][j], end=' ')
    print()

Тестовые данные для ввода: размерности 2 2 3

Матрица А

2 3

-1 4

Матрица Б

2 -3 4

3 1 0

Вывод:

13 -3 8

10 7 -4

Не могу найти решение для матриц разного размера, 2х2 на 2х3


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

Автор решения: MBo

При перемножении матриц указанных размеров получается матрица n x p.
Так что достаточно исправить при выводе

for i in range(n):

и код будет работать с любыми размерами

Если не использовать никаких питоновских штучек, кроме задания результирующей матрицы (так что циклы будут выглядеть так же в большинстве языков):

c = [[0]*p for _ in range(n)]
for i in range(n):
    for j in range(p):
        for k in range(m):
            c[i][j] += X[i][k] * Y[k][j]
→ Ссылка