2016-07-29 6 views
-5
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 

Das Problem ist, ich die Fehlermeldung list index out of range bekommen, aber ich setze bereits, wenn die Bedingung also, wenn j3 überschreiten wird passieren, n-ten. Also, wo liegt das Problem?Python 2d Array-Liste Indexbereich aus

+0

Sie erhalten Ihre 'i' und' j' Indizes vermischt. – Julien

Antwort

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

schafft das Array [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

Ihr Code für ein Array aufgebaut, die wie folgt aussieht: [[0, 0], [0, 0],[0, 0],[0, 0],[0, 0]].

Also entweder i und j sind rund um die falsche Richtung oder Ihr:

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

gibt Ihnen nicht das, was Sie erwarten.

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

zu

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

So in Ihrer Liste gleich ist, haben Sie zwei Listen mit 5 Elementen jeder.

Schauen Sie sich diese Zeile:

text[i][j]=link.string 

i - ist die Anzahl der Elemente in der Variablen text (Sie haben 2)

j - ist die Anzahl der Elemente in jeder Liste (Sie haben 5 Elemente)

Es sieht so aus, als ob Sie i und j gemischt haben.