我用python编写这个函数是为了进行矩阵乘法,但由于某些原因,它不能按预期工作。代码在我看来很好,但python似乎正在填充矩阵中y位置的所有列表,我不明白它为什么这样做。
def maal(N, M):
a = []
b = []
for i in range(len(N)):
a.append(0)
for j in range(len(M[0])):
b.append(a)
for x in range(len(N)):
for y in range(len(M[0])):
for z in range(len(M)):
b[x][y] += N[x][z] * M[z][y]
return b
print(maal([[5, 4, 32], [5, 6, 74]], [[1, 2], [4, 5], [7, 8]]))
#solution is b = [[245, 286],[547,632]]
我得到的结果是
[[792, 918], [792, 918]]
因为它会同时填满这两个列表。
有人能帮我吗?