Я пытаюсь создать код, который выполняет умножение матриц без numpy или zip *. Код работает нормально, когда я определяю нулевую матрицу, которая получает результат умножения, но результаты перекрываются, когда я пытаюсь сделать переменную определенной циклом.
Я, очевидно, не могу просто определить пустую матрицу, потому что компилятор выдает индекс из-за ошибки диапазона, а результирующая матрица умножения изменяется в зависимости от входных данных. Я предоставил скриншот для пустой матрицы, когда она определена и когда код позволяет создавать пустую матрицу.
def empty(X, Y):
P=[]
row=[]
for r in range(len(Y[0])):
row.append(0)
for t in range(len(X)):
P.append(row)
return P
def multiply(X, Y):
P=empty(X, Y)
#P=[[0, 0], [0, 0], [0, 0]]
for i in range(len(X)):
for j in range(len(Y[0])):
for k in range(len(Y)):
P[i][j] += X[i][k] * Y[k][j]
return P
def One(X, Y):
x=[]
b=[]
count=0
for i in range(len(X)):
b.append(1)
x.append(b)
x.append(X)
return x
d=[[1, 2], [2, 3], [2, 4]]
b=[[2, 4], [5, 6]]
print(multiply(d,b))
print(empty(d,b))
Две матрицы выглядят одинаково в окне вывода. Первый - тот, который я определил вручную как P=[[0,0],[0,0],[0,0]]
.
Второй - тот, который создан из функции empty()
. Результат отличается от функции умножения; по какой-то причине оно перезаписывается.