亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用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 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號