为什么我得到IndexError:list index超出范围?

时间:2013-09-05 10:40:26

标签: python python-3.x

我不停地使用列表获取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行)我得到正确的输出但是当我尝试时打印整个列表。欢迎任何欢迎。

由于

1 个答案:

答案 0 :(得分: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)))