Ошибка «Список индексов вне диапазона» в Python - PullRequest
2 голосов
/ 13 октября 2011

Я снова делаю простые шашки.И, чтобы отслеживать все местоположения, в которые нужно перейти шашкам, я создал список для добавления всех местоположений.

Locations = [(10, 10), (70, 10), (130, 10), (190, 20), (250, 10), (310, 10), \
         (370, 10), (430, 10), (10, 70), (130, 70), (190, 70), (250, 70), \
         (310, 70), (370, 70), (430, 70), (10, 130), (70, 130), (130, 130), \
         (190, 130), (250, 130), (310, 130), (370, 130), (430, 130), \
         (10, 190), (70, 190), (130, 190), (190, 190), (250, 190), (310, 190), \
         (370, 190), (430, 190)]

Однако, когда я пытаюсь выполнить программу, я всегдаget: Ld8 = Locations [31] - индекс списка вне диапазона

Итак, я подумал, что список может содержать только определенное количество чисел.Итак, я создал второй список Locations и добавил строки E - H, чтобы разделить список.Но я все еще получаю ту же ошибку индекса, находящегося вне диапазона.(Ld8 - переменная, хранящая местоположение строки D, столбец 8)

Ответы [ 6 ]

6 голосов
/ 13 октября 2011

У вас очень простая проблема понимания:

>>> Locations = [(10, 10), (70, 10), (130, 10), (190, 20), (250, 10), (310, 10), (370, 10), (430, 10), (10, 70), (130, 70), (190, 70), (250, 70), (310, 70), (370, 70), (430, 70), (10, 130), (70, 130), (130, 130), (190, 130), (250, 130), (310, 130), (370, 130), (430, 130), (10, 190), (70, 190), (130, 190), (190, 190), (250, 190), (310, 190), (370, 190), (430, 190)]
>>> len(Locations)
31
>>> Locations[0] # first element
(10, 10)
>>> Locations[30] # last element
(430, 190)
>>> Locations[31] # doesn't exist!
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Количество элементов в локациях варьируется от 0 до 30, потому что всего их 31 элемент.

3 голосов
/ 13 октября 2011

Индексы списков начинаются с 0. Таким образом, ваш список содержит 31 элемент, к которым вы можете обращаться с индексами 0-30.Местоположение [31] относится к 32-му пункту, который не существует

2 голосов
/ 13 октября 2011

Самый большой индекс в этом списке - 30, а не 31. Индексы в списках (в большинстве языков) начинаются с нуля. Таким образом, (10,10) имеет индекс 0, а (430,190) - индекс 30.

.

Если вы пытаетесь индексировать в конце списка в Python, я предлагаю вам индексировать по Locations[-1].

Если вы пытаетесь использовать len, вам необходимо вычесть 1: Locations[len(Locations) - 1]

1 голос
/ 13 октября 2011

Эмм ... Элементы списка нумеруются от 0, а не от 1. Я просчитал ваш список и вижу элементы от 0 до 30.

Иногда я даже забываю, что можно начать отсчет с 1...

0 голосов
/ 13 октября 2011

Индексы массивов для большинства языков программирования начинаются с 0, а не 1.

0 голосов
/ 13 октября 2011

Locations [31] пытается получить доступ к 32-му элементу в списке (который не существует)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...