繁体   English   中英

IndexError:嵌套列表(矩阵)的列表索引超出范围

[英]IndexError: list index out of range for nested list (matrix)

我一直在尝试解决 HackerRank 上的一个问题,这是我的解决方案,我收到此错误IndexError: list index out of range on line 21,即s_sum += arr[i][n-1] ,有人可以帮我解决这个问题吗?

def diagonalDifference(arr):
    p_sum = 0
    s_sum = 0
    for i in range(n):
        p_sum += arr[i][i]
        s_sum += arr[i][n-i]
    return abs(p_sum - s_sum)

n = int(input().strip())
arr = []
for _ in range(n):
    arr.append(list(map(int, input().rstrip().split())))
result = diagonalDifference(arr)
print(result)

i = 0时,即在for循环的第一次迭代中, ni的计算结果为n ,但如果arr的大小为n ,则超出范围。

当你循环 -

for i in range(n):
    p_sum += arr[i][i]
    s_sum += arr[i][n-i]

在这里,我从 0 开始,你有_sum += arr[i][n-1]这将是arr[0][n]在第一次迭代中。 这将 go 超出范围,因为您的arr只能索引到arr[i][n-1] 所以,这给你list index out of range错误。

您应该正确执行以下操作 -

for i in range(n):
    p_sum += arr[i][i]       #primary diagonal sum
    s_sum += arr[i][(n-1)-i] #secondary diagonal sum. notice the indexing arr[i][n-1-i] 
                             #which ensures that the array doesn't access out of its bounds

希望这可以帮助 !

由于您运行,您超出范围错误

s_sum += arr[i][n-i]

[0:n-1]范围内。 因此,当i = 0您的第二个索引变为n时,这超出了它尝试访问arr[0][n]的范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM