2013-09-05 3 views
-2

Я продолжаю получать IndexError со списком. Мой код выглядит следующим образом:Почему я получаю IndexError: индекс индекса вне диапазона?

for x in range(len(MAIN_list[0])): 
        print(x) 
        print(MAIN_list[9][x]) 
        print(MAIN_list[10][x]) 
        print(MAIN_list[0][x] + "; " + MAIN_list[1][x] + \ 
         "; " + MAIN_list[2][x] + "; " + MAIN_list[3][x] + \ 
         "; " + MAIN_list[4][x] + "; " + MAIN_list[5][x] + \ 
         "; " + MAIN_list[6][x] + "; " + MAIN_list[7][x] + \ 
         "; " + MAIN_list[8][x] + "; " + MAIN_list[9][x] + \ 
         "; " + MAIN_list[10][x]) 

Теперь выход:

0 
cross 
tick 
Traceback (most recent call last): 
    File "C:\Users\Michele2\Desktop\Arcrate\MyCASH\Python Code\Scraping\Scraping1.3(clean)TEST.py", line 246, in <module> 
    "; " + MAIN_list[10][x]) 
IndexError: list index out of range 

Я знаю, что вы обычно получаете эту ошибку для переменных за пределами фактической длины списка, но здесь я получаю правый вывод, когда я вызываю его сингулярно (т. е. строка 3 вывода), но не тогда, когда я пытаюсь распечатать список в целом. Любые, хотя бы приветствуются.

Благодаря

+0

, что appens если вы 'печать (MAIN_list)'? –

+0

Сделайте 'print [len (x) для x в MAIN_list]' - по крайней мере один из подписок меньше, чем 'MAIN_list [0]'. Для исключений в многострочных операторах трассировка отображает только последнюю строку; это не означает, что ошибка должна быть именно там. – l4mpi

ответ

0

Единственный момент, который я вижу в том, что один из ваших списков случайно короче, чем у других.

Вы структурировали свои данные очень странным образом - по столбцам, а не по ряду.

Обычно у вас есть MAIN_list список строк (списки или кортежи). Затем вы получите доступ с помощью MAIN_list[row][column] и сможете перебирать их в правильном порядке.

В вашем случае все по-другому. Первым пунктом для проверки может быть

for x in range(11): 
    print(len(MAIN_list[x])) 

Итерирование по колоннам и проверка их длины. Может быть, одна пустая ...

Кстати, после того как вы нашли причину и закрепили его, вы можете упростить выражение:

print("; ".join(MAIN_list[i][x] for i in range(11))) 
Смежные вопросы