2013-10-03 48 views
1
class world: 
    def __init__(self, screen_size): 
     self.map = [[0 for col in range(500)] for row in range(500)] 
     self.generate() 

    def generate(self): 
     for x in range(0, len(self.map[0])): 
      for y in range(0, len(self.map)): 
       kind = random.randint(0, 100) 
       if kind <= 80: 
        self.map[x][y] = (random.randint(0, 255),random.randint(0, 255),random.randint(0, 255)) 
       else: 
        self.map[x][y] = (random.randint(0, 255),random.randint(0, 255),random.randint(0, 255)) 
     print self.map[50][50], self.map[-50][-50] 
printing => (87, 92, 0) (31, 185, 156) 

負值不超出範圍的可能性如何?它應該拋出IndexError。Python中,負值不在列表中的範圍內

+1

負指數將列表向後索引('l [-1] == l [len(l) - 1]')。 – Blender

回答

2

使用負數從列表的後面開始計數,這就是爲什麼它們仍然有效。

0

當您索引到列表中時,負值表示從最後開始的N個值。所以,-1是最後一項,-5是從結尾開始的第五項等等。一旦你習慣了它,它確實非常有用。

1

我認爲這可以用示範來最好的解釋:

>>> a = [1, 2, 3, 4] 
>>> a[-1] 
4 
>>> a[-2] 
3 
>>> a[-3] 
2 
>>> a[-4] 
1 
>>> # This blows up because there is no item that is 
>>> # 5 positions from the end (counting backwards). 
>>> a[-5] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: list index out of range 
>>> 

正如你所看到的,負指數步驟向後在列表中。

爲了進一步解釋,你可以閱讀這個link的第3.7節,其中討論了帶有列表的負向索引。