python 用列表做矩阵的乘法,循环内发生错误

新手上路,请多包涵

R = [[1.0, 2.0], [1.0, 1.0]]
T = [[1.0, 1.0], [1.0, 1.0]]
a = len(R)
b = len(R[1])
c =len(T)
d = len(T[1])
print(a,b,c,d)
if b != c:

print ("error")

else :

P = [[0]*a]*d
for i in range(a):
    for j in range(d):
        for k in range(b):
            print("k为")
            print(i,j,k)
            P[i][j] += R[i][k]*T[k][j]

print(P)


0 0 0
[[1.0, 0], [1.0, 0]]
0 0 1
[[3.0, 0], [3.0, 0]]
0 1 0
[[3.0, 1.0], [3.0, 1.0]]
0 1 1
[[3.0, 3.0], [3.0, 3.0]]
1 0 0
[[4.0, 3.0], [4.0, 3.0]]
1 0 1
[[5.0, 3.0], [5.0, 3.0]]
1 1 0
[[5.0, 4.0], [5.0, 4.0]]
1 1 1
[[5.0, 5.0], [5.0, 5.0]
每次赋值都赋给给了下一行的元素,请问一下是哪里错了呢

题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.5k
1 个回答
新手上路,请多包涵

P = [[0]a]d 改成 P = [ [0] * d for i in range(a) ]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题