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

牛牛的矩阵乘法

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:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:45
你不要过来啊啊啊啊啊啊啊
码农索隆:对面:“今天你不面也得面”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务