2017-10-22 3 views
0
class Spillebrett: 
    def __init__ (self, rader, kolonner): 
     self._rader=rader 
     self._kolonner=kolonner 
     self._rutenett=[[]] 

    def generer(self): 
     for i in range(self._rader): 
      for j in range(self._kolonner): 
       rand=randint(0,3) 
       if rand==3: 
        self._rutenett[i][j].settLevende() 

File "/mnt/c/skole/Oblig7/spillebrett.py", line 78, in generer self._rutenett[i][j].settLevende() IndexError: list index out of rangeerhalte ich eine Liste außerhalb des zulässigen Bereichs

Was ich falsch gemacht?

+0

nicht, wie Sie Sieht sind Erstellen neuer Listen in self._rutenett –

Antwort

0

Da self._rutenett eine leere Liste von Listen ist, ist es self._rutenett[i][j] ist außerhalb des Bereichs.

Verwendet self._rutenett.append() inexistent Mitglieder-Listen hinzuzufügen, (beachten Sie, dass Sie nicht eine spärliche Liste, dh eine mit einem Index von 2 ohne 0 & 1 bestehende Nutzung ein Wörterbuch oder besser ein collections.defaultdict dafür haben).

1

dieses einfache Beispiel betrachten:

item1 = 5 
item2 = 5 

newlist = [] 

for i in range(item1): 
    newlist.append([]) 
    for j in range(item2): 
     newlist[i].append((i,j)) 

newlist 

Returns:

[[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)], 
[(1, 0), (1, 1), (1, 2), (1, 3), (1, 4)], 
[(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)], 
[(3, 0), (3, 1), (3, 2), (3, 3), (3, 4)], 
[(4, 0), (4, 1), (4, 2), (4, 3), (4, 4)]] 

Wir auch Liste Verständnis, das Gleiche zu erreichen verwenden können:

item1 = 5 
item2 = 5 

newlist = [[(i,j) for j in range(item2)] for i in range(item1)] 

newlist 
Verwandte Themen