ошибка индексации в списке в python - PullRequest
3 голосов
/ 10 апреля 2010
B=l.append((l[i]+A+B))

l здесь список, и я пытаюсь добавить в него большее значение, чтобы он действовал как массив. Но это все еще дает мне ошибку, как индекс списка вне диапазона. Как от этого избавиться?

Ответы [ 3 ]

1 голос
/ 10 апреля 2010

Индекс списка вне диапазона означает, что i больше len(l) - 1 (поскольку Python и многие другие языки программирования используют индексирование, начинающееся с 0 вместо 1, последний элемент в списке имеет индекс len(l) - 1 не только len(l).

Попробуйте отладку так:

try:
    B = l.append((l[i] + A + B))
except IndexError:
    print "Appending from index", i, "to list l of length:", len(l)
    raise

Это сообщит вам значение i и длину l в случае сбоя добавления, чтобы вы могли найти проблему.

Это в цикле? Это может помочь показать нам код цикла. Может случиться так, что даже если вы увеличиваете длину l, добавляя к ней, вы увеличиваете i еще быстрее, так что в конечном итоге она становится больше, чем len(l) - 1.

1 голос
/ 10 апреля 2010

В вашем коде много проблем:

1) метод append ничего не возвращает , поэтому не имеет смысла писать B = l.append(...)

2) Двойные круглые скобки сбивают с толку, код, который вы написали, в точности эквивалентен B.append(l[i]+A+B)

3) Наконец, очевидно, что индекс i должен быть допустимым индексом для списка l, в противном случае вы получите исключение IndexError.

0 голосов
/ 10 апреля 2010

Переменная i больше или равна размеру массива l.

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