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 をスローする必要があります。

4

3 に答える 3

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
>>>

ご覧のとおり、負のインデックスはリストを後方に移動します。

さらに説明するには、このリンクのセクション 3.7 を読んで、リストを使用した負のインデックス作成について説明しています。

于 2013-10-03T18:48:18.097 に答える
1

リストにインデックスを付ける場合、負の値は末尾から N 個の値を意味します。つまり、-1 は最後の項目、-5 は最後から 5 番目の項目などです。慣れると、実際には非常に便利です。

于 2013-10-03T18:40:14.990 に答える