python 2d数组列表索引超出范围

时间:2016-07-29 07:52:09

标签: python arrays beautifulsoup

j=0
i=0
text=[[0 for x in range(5)]for y in range(2)]
while (i<5):
    for link in soup.findAll('td'):
        if j<2:
            text[i][j]=link.string
            j+=1
i+=1

问题是我收到错误消息list index out of range,但我已经设置了if条件,因此如果j超过3将会发生。那么问题是什么?

2 个答案:

答案 0 :(得分:0)

[[0 for x in range(5)] for y in range(2)] 

创建数组[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

您的代码是为一个类似于[[0, 0], [0, 0],[0, 0],[0, 0],[0, 0]]

的数组构建的

因此ij的方式不对,或者您的:

[[0 for x in range(5)] for y in range(2)] 

没有给你你所期望的。

答案 1 :(得分:0)

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

等于

text[i][j]=link.string

因此,在列表中,您有2个列表,每个列表包含5个元素。

然后看看这一行:

i

text - 变量j中的元素数量(您有2个)

i - 每个列表中的元素数量(您有5个元素)

您好像混合了j// Show the picture box pictureBox.Visible = true; // Hide the picture box pictureBox.Visible = false;