我基本上有一个用这个创建的二维网格数组:
def createRoom(self):
self.room = [[0] * 8 for x in xrange(8)]
for x in xrange(8):
self.room[x][0] = 2
for j in xrange(8):
self.room[0][j] = 2
for i in xrange(8):
self.room[-1][x] = 2
for n in xrange(8):
self.room[n][-1] = 2
for x in xrange(6):
self.room[1][x+1] = 1
for x in xrange(1):
self.room[2][x+6] = 1
for x in xrange(1):
self.room[3][x+6] = 2
for x in xrange(1):
self.room[4][x+6] = 2
for x in xrange(1):
self.room[3][x+5] = 1
for x in xrange(1):
self.room[4][x+5] = 1
for x in xrange(1):
self.room[5][x+6] = 1
for x in xrange(6):
self.room[6][x+1] = 1
for x in xrange(5):
self.room[x+1][1] = 1
return self.room
使用 PrettyPrinter 看起来像这样:
[ [2, 2, 2, 2, 2, 2, 2, 2],
[2, 1, 1, 1, 1, 1, 1, 2],
[2, 1, 0, 0, 0, 0, 1, 2],
[2, 1, 0, 0, 0, 1, 2, 2],
[2, 1, 0, 0, 0, 1, 2, 2],
[2, 1, 0, 0, 0, 0, 1, 2],
[2, 1, 1, 1, 1, 1, 1, 2],
[2, 2, 2, 2, 2, 2, 2, 2]]
但是当我想要获取 self.room[6][3] 时,它返回 1 而不是 2。
除非我将顺序更改为 self.room[3][6],否则为什么会这样做?
最佳答案
这是你的“房间”。按照您的设置方式,它将是按行优先顺序从 0 开始的索引。
[[2, 2, 2, 2, 2, 2, 2, 2],
[2, 1, 1, 1, 1, 1, 1, 2],
[2, 1, 0, 0, 0, 0, 1, 2],
[2, 1, 0, 0, 0, 1, 2, 2], # <-- 4th row
[2, 1, 0, 0, 0, 1, 2, 2],
[2, 1, 0, 0, 0, 0, 1, 2],
[2, 1, 1, 1, 1, 1, 1, 2], # <-- 7th row
[2, 2, 2, 2, 2, 2, 2, 2]]
room[6][3]
是第 7 行中的第 4 个元素,即 1。
room[3][6]
是第 4 行中的第 7 个元素,即 2。
希望这能解决问题。
关于python - 为什么此列表以错误的顺序返回 x 和 y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576027/