我基本上有一个用这个创建的2d网格数组:
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 :(得分:1)
这是你的“房间”。您设置它的方式,它将按行主要顺序进行基于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.
希望这可以解决问题。
答案 1 :(得分:1)
我只想指出输入
的容易程度[[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]]
比输入您输入的内容。但除此之外,请观察以下输出,也许您会理解。
>>> room[0]
[2, 2, 2, 2, 2, 2, 2, 2]
>>> room[1]
[2, 1, 1, 1, 1, 1, 1, 2]
>>> room[2]
[2, 1, 0, 0, 0, 0, 1, 2]
>>> room[3]
[2, 1, 0, 0, 0, 1, 2, 2]
>>> room[4]
[2, 1, 0, 0, 0, 1, 2, 2]
>>> room[5]
[2, 1, 0, 0, 0, 0, 1, 2]
>>> room[6]
[2, 1, 1, 1, 1, 1, 1, 2]
>>> room[7]
[2, 2, 2, 2, 2, 2, 2, 2]
>>> room[6][0]
2
>>> room[6][1]
1
>>> room[6][2]
1
>>> room[6][3]
1
答案 2 :(得分:0)
self.room[6][3]
为1,因为这是您在以下循环中设置的内容:
for x in xrange(6):
self.room[6][x+1] = 1