为什么返回IndexError:当索引存在时列表索引超出范围?

为什么返回IndexError:当索引存在时列表索引超出范围?

给出一个由数字0和1组成的矩阵,我试图找到仅包含1的正方形的最大大小。

为什么返回IndexError:当索引存在时列表索引超出范围?

如果我编写上面的代码,我将得到IndexError:列表索引超出范围。但是,如果我将第34行的代码更改为if arr[i-1][j-1] == '1':,则它可以工作。

我的问题是这是怎么发生的?我检查了arr中的项目类型,它们都是int类型,那么为什么在我写if arr[i-1][j-1] == 1:时它不起作用? 任何答案都将有所帮助,谢谢。

snaketigger 回答:为什么返回IndexError:当索引存在时列表索引超出范围?

dp只有1行包含(rows+1) * (cols+1)零,没有rows+1行具有cols+1零。因此,每当您使用dp[i]访问i >= 1时,都会出现错误。

应该是:

dp = [[0 for i in range(cols+1)] for j in range(rows+1)]

或更简单地

dp = [[0] * (cols+1) for _ in range(rows+1)]
本文链接:https://www.f2er.com/2761882.html

大家都在问