Вопрос-Ответ

Does "IndexError: list index out of range" when trying to access the N'th item mean that my list has less than N items?

Означает ли "IndexError: индекс списка вне диапазона" при попытке доступа к N-му элементу, что в моем списке меньше, чем N элементов?

Я говорю своей программе распечатать строку 53 вывода. Эта ошибка сообщает мне, что строк не так много и, следовательно, я не могу ее распечатать?

Переведено автоматически
Ответ 1

Если у вас есть список из 53 элементов, последним будет thelist[52] потому что индексация начинается с 0.


Из реального Python: понимание обратной трассировки Python - IndexError:


IndexError


IndexError возникает, когда вы пытаетесь извлечь индекс из последовательности, такой как list или a tuple, и индекс не найден в последовательности. Документация Python определяет, когда возникает это исключение:



Повышается, когда нижний индекс последовательности находится вне диапазона. (Источник)



Вот пример, который вызывает IndexError:


test = list(range(53))
test[53]

---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-6-7879607f7f36> in <module>
1 test = list(range(53))
----> 2 test[53]

IndexError: list index out of range

Строка сообщения об ошибке для an IndexError не дает вам полезной информации. Вы можете видеть, что у вас есть ссылка на последовательность, которая является out of range и каков тип последовательности, a list в данном случае. Этой информации в сочетании с остальной частью обратной трассировки обычно достаточно, чтобы помочь вам быстро определить, как устранить проблему.


Ответ 2

ДА,

Вы пытаетесь получить доступ к элементу списка, который не существует.

MyList = ["item1", "item2"]
print MyList[0] # Will work
print MyList[1] # Will Work
print MyList[2] # Will crash.

У вас ошибка "один за другим"?

Ответ 3

Способ индексирования Python заключается в том, что он начинается с 0, поэтому первым номером вашего списка будет [0]. Вам пришлось бы напечатать [52], поскольку начальный индекс равен 0 и, следовательно, строка 53 равна [52].

Вычтите 1 из значения, и все будет в порядке. :)

Ответ 4

ДА. В последовательности нет 54-го элемента.

python list