2012-03-06 23 views
1

我已经基本与此创建一个二维网格阵列:为什么此列表以错误的顺序返回x和y?

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

只是复制该文字,而不是张贴图像请。 – 2012-03-06 00:05:16

回答

0

self.room[6][3]是1,因为那是你在下面的循环将其设置为:

for x in xrange(6): 
     self.room[6][x+1] = 1 
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

我只是想指出,很容易就如何键入

[[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 
+0

我刚刚删除了所有内容,并为该阵列设置了空间......谢谢。 – Liban 2012-03-06 00:14:23

相关问题