2012-03-06 53 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

相關問題