【发布时间】:2020-04-04 23:18:18
【问题描述】:
我试图进行矩阵乘法,同时使用快捷方法初始化列表,即 C[[0]*column]*row。 该列表已按我想要的方式初始化,但它给了我错误的答案。 之后我尝试使用 for 循环初始化代码,它给了我正确的答案。 请帮助我了解此 python 列表行为背后的原因。
这是我的代码:
A = [[1,2],[3,4]]
B = [[5,6,],[7,8]]
C = []
for i in range(2):
c = []
for j in range(2):
c.append(int(0))
C.append(c)
D = [[int(0)]*2]*2
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
C[i][j] += A[i][k] * B[k][j]
D[i][j] += A[i][k] * B[k][j]
for r in C:
print(r)
print(D)
这是我的输出:
[[19, 22],[43, 50]]
[[62, 72], [62, 72]]
【问题讨论】:
-
D中的子列表指向内存中的同一个列表。见stackoverflow.com/questions/240178/…
标签: python list matrix matrix-multiplication