2d数组中的Python索引错误

2d数组中的Python索引错误,python,Python,我正在制作一个包含2d数组的游戏,我要求用户输入网格的高度和宽度,下面是生成网格的代码 Grid=[['O'for x in range(gridS[0])]for y in range(gridS[1])] 我稍后将网格[0]和1更改为网格X和Y 然后我尝试将玩家添加到网格中,再次询问用户有多少玩家(存储在可变对手中),然后添加那么多玩家 if opponents>0: Grid[gridX-1][gridY-2]='P'

我正在制作一个包含2d数组的游戏,我要求用户输入网格的高度和宽度,下面是生成网格的代码

Grid=[['O'for x in range(gridS[0])]for y in range(gridS[1])]
我稍后将网格[0]和1更改为网格X和Y

然后我尝试将玩家添加到网格中,再次询问用户有多少玩家(存储在可变对手中),然后添加那么多玩家

            if opponents>0:
            Grid[gridX-1][gridY-2]='P'
            if opponents>1:
                Grid[0][(gridY-2)]='P'
                if opponents>3:
                    Grid[gridX-1][0]='P'
但是,在测试时,会出现以下错误:

>>> How many bots do you want to play against?
>>> 10
>>> Please enter a number between 0 and 3
>>> 2
2

    Grid[gridX-1][gridY-2]='P'
IndexError: list assignment index out of range

问题是嵌套理解构造了一个维度为“翻转”的嵌套数组。考虑:

>>> dims = (4, 2)
>>> GRID = [['0' for x in range(dims[0])] for y in range(dims[1])]
>>> GRID
[['0', '0', '0', '0'], ['0', '0', '0', '0']]
这通常被称为2X4“矩阵”。虽然这是一个危险信号,但这是一个符号问题。基本问题是使用
gridX,gridY=dims
索引第一个轴。因此:

>>> x, y = dims
>>> x
4
>>> len(GRID)
2
>>> GRID[x]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

换句话说,内在理解创造了第二个轴,外在理解创造了第一个轴。但你的想法正好相反。

那是一个列表而不是数组。我的老师说数组-我的badIt是一个迂腐的点,松散地说,它可以被称为数组,但最好是精确的。gridX和gridY在那一行之前代表什么?在那里打印它们,你会看到你的错误。它包含一个介于6和12之间的数字,由用户决定
 Grid=[['O'for y in range(gridS[1])]for x in range(gridS[0])]