为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用python在矩阵中找到最大平方和

如何使用python在矩阵中找到最大平方和

HUH函数 2021-08-24 17:37:53
我正在尝试编写一个代码,该代码将为我提供矩阵中最大平方和。注意:在形成正方形时,这些值必须彼此相邻。注意 2:我只被允许使用函数,目前我正在上课的课程中不允许导入任何东西。例如: max_mat_square([[1,2.5,3],                 [4,-4,6],                 [0.5,-1,5]])[7.5]现在这是我的代码:def max_mat_square(mat):    sum1 = []    for i in range(len(mat[:-1])):        print i        for j in range(len(mat[1:])):                print 'index' , j                sum1.append([float(mat[i][j]) + float(mat[i+1][j])+float(mat[i][j+1])+float(mat[i+1][j+1])])    return max(sum1)现在代码在第一个例子中工作正常,但是每当我运行这个矩阵时抛出它:max_mat_square([[1,2], [3,4], [5,6]])我收到“列表索引超出范围”错误,我想要这个矩阵的结果是 18。我尝试了很多方法来修复错误,但都没有奏效。
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我认为你的第一个例子只是偶然地起作用,因为你的矩阵的形状。目前,该循环中使用的切片意味着您正在从第二个子列表中选择到最后:


mat[1:]

>> [[3,4], [5,6]]

这意味着您将尝试遍历每个range(2)将超出范围的元素。


将第二个 for 语句更改如下:


def max_mat_square(mat):

    sum1 = []

    for i in range(len(mat[:-1])):

        for j in range(len(mat[i])-1):

            print (i , j)

            sum1.append([float(mat[i][j]) + float(mat[i+1][j])+float(mat[i][j+1])+float(mat[i+1][j+1])])

    return max(sum1)


查看完整回答
反对 回复 2021-08-24
?
郎朗坤

TA贡献1921条经验 获得超9个赞

问题是你的内for循环。您应该j从 0 开始到该行的倒数第二个索引:


for j in range(len(mat[i][:-1])):

    ...

所以你的最终功能变成:


def max_mat_square(mat):

    sum1 = []

    for i in range(len(mat[:-1])):

        print(i)

        for j in range(len(mat[i][:-1])):

                print('index' , j)

                sum1.append([float(mat[i][j]) + float(mat[i+1][j])+float(mat[i][j+1])+float(mat[i+1][j+1])])

    return max(sum1)


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号