2016-11-18 127 views
-1

我有一個數組,它有條目(例如,array =([1,2],[2,3],[3,4])),我想循環這些列表和比較具體的項目,看它是否匹配的標準,但我不斷收到此錯誤:「Indexerror:列表索引超出範圍」列表索引超出範圍? (Python)

這是我的代碼:

for i in enumerate(arr): 
     if arr([i][6]) == 0.0: 
      humans= humans+[arr[i,col]] 

我已經檢查了例如通過打印數組[1] [6]來打印實際數組,我知道這裏有一個值。那爲什麼它不會循環?

+0

如果你歷數(ARR)。Ⅰ型 : 'i'是元組'(指數值)'。你能發佈堆棧跟蹤嗎? –

+0

你對'arr [i,col]'有什麼瞭解?你對「i」和「col」的價值有多瞭解?請放心,如果python告訴你列表索引超出範圍,那就是了。 –

+0

'arr([i] [6])'。你用'[i]'的第7個元素調用'arr',這是一個元素列表。 –

回答

1

你對enumerate()的理解是錯誤的。它返回每個項目映射到其索引的元組列表。這是因爲你的情況下返回值:

>>> list(enumerate(arr)) 
[(0, [1, 2]), (1, [2, 3]), (2, [3, 4])] 

如果想重複使i將值從0到arr長度,你需要使用range()爲:

for i in range(len(arr)) 

另外,列表的內容是:

arr = [[1,2],[2,3],[3,4]] 

這是一個3X2的列表,你正在做arr[i][6],它會給IndexError爲每個子升長IST是隻有兩個

+0

我剛試過這個,我仍然在第二行得到同樣的錯誤 – Sam

+0

@Sam:檢查我的編輯 –

+0

非常感謝你!成功了! – Sam