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()
文件“/mnt/c/skole/Oblig7/spillebrett.py”,第78行,发送者 self._rutenett [i] [j] .settLevende()IndexError:列表索引超出范围
我做错了什么?
答案 0 :(得分:1)
考虑这个简单的例子:
item1 = 5
item2 = 5
newlist = []
for i in range(item1):
newlist.append([])
for j in range(item2):
newlist[i].append((i,j))
newlist
返回:
[[(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)]]
我们也可以使用list comprehension来实现同样的目的:
item1 = 5
item2 = 5
newlist = [[(i,j) for j in range(item2)] for i in range(item1)]
newlist
答案 1 :(得分:0)
由于self._rutenett
是列表的空列表,因此self._rutenett[i][j]
超出范围。
使用self._rutenett.append()
将不存在的成员添加到列表中(请注意,您不能有稀疏列表,即索引为2且不存在0& 1的成员使用字典或更好的是collections.defaultdict
。