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)
添加回答
举报