簡體   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