题解 | #牛牛的矩阵乘法#

牛牛的矩阵乘法

https://www.nowcoder.com/practice/4356eb31276b4b7689a4cf0997647f88

import copy
x = [[13, -1, 4], [5, 0, 6], [1, 9, -3]]
# y = x.copy()
y = copy.deepcopy(x)
# print(y)
# for i in range(len(y)):
#     for j in range(len(y[i])):
#         y[i][j] += 1
# 因为该题目答案错了,根据题目答案的意思y矩阵并没有在x的矩阵的对应位置的元素值加1,而是完全等于x矩阵。所以注释了上段代码。
# print(y)

# z = [[]]
# 这样操作的效果相当于对[0]*3的一维列表复制了3次,也就是说,当更改其中一个列表的值时,实际上对z列表中的这3个列表都修改了值。
# z = [[0] * 3] * 3
# 这个赋初值的方法有问题,一旦这样做,那么后面的列表都和前面的列表的元素值一样,
# 因为是直接相乘赋值的,相当于后面两个直接复制了前面定义的那一个两次。
# z = [[0 for i in range(3)] for j in range(3)]
# 这样才是正确的
z = list(list(0 for i in range(3)) for _ in range(3))
# 这样也是正确的
# 但下面这样是错误的,这样是相当于创建了1行3列的二维数组。
# z = list(list(0 for _ in range(3)))
# 总之,有几个嵌套的list()函数就是几维数组,有几个嵌套的[]就是几维数组。

# z = [[0,0,0],[0,0,0],[0,0,0]]
# print(z)
# z = [[0] * 3 for _ in range(3)]
for i in range(len(y)):  # 行
    for j in range(len(y[i])):  # 列
        # z.append()
        #         for k in x[i]:
        #             k * y[j][i]
        #             z[i][j] += k * y[j][i]
        #         z[i][j] = x[i][j] * y[i][j]
        length = 0
        width = 0
        while length < len(x) and width < len(x):
            z[i][j] += x[i][width] * y[length][j]
            # print(z[1][0])
            length += 1
            width += 1
print(z)

全部评论

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务