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)

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)
添加回答
舉報