2016-11-18 3 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])'. Вы вызываете 'arr' с 7-м элементом' [i] ', который представляет собой список отдельных элементов. –

ответ

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: Check my edit –

+0

Большое вам спасибо ! работал! – Sam

Смежные вопросы