4

我想在 python 中声明和填充一个二维数组,如下所示:

def randomNo():
    rn = randint(0, 4)
    return rn

def populateStatus():
    status = []
    status.append([])
    for x in range (0,4):
        for y in range (0,4):
            status[x].append(randomNo())

但我总是得到 IndexError: list index out of range 异常。有任何想法吗?

4

5 回答 5

4

更多“现代python”的做事方式。

[[ randint(0,4) for x in range(0,4)] for y in range(0,4)]

它只是一对嵌套列表推导。

于 2017-12-14T21:15:04.853 回答
3

将“行”添加到状态数组的唯一时间是在外部 for 循环之前。
所以 -status[0]存在但status[1]不存在。
您需要移动status.append([])到外部 for 循环内部,然后它会在您尝试填充它之前创建一个新的“行”。

于 2013-09-27T06:39:17.313 回答
3

您没有status为每个值增加行数x

for x in range(0,4):
    status.append([])
    for y in range(0,4):
        status[x].append(randomNo())
于 2013-09-27T06:39:45.720 回答
2

尝试这个:

def randomNo():
  rn = randint(0, 4)
  return rn

def populateStatus():
  status = {}
  for x in range (0,4):
    status [x]={}
    for y in range (0,4):
        status[x][y] = randomNo()

这将为您提供一个 2D 字典,您可以像这样访问val=status[0,3]

于 2013-09-27T06:46:47.923 回答
1

如果您的问题是关于生成随机整数数组,numpy 模块可能很有用:

import numpy as np
np.random.randint(0,4, size=(4,4))

这直接产生

array([[3, 0, 1, 1],
       [0, 1, 1, 2],
       [2, 0, 3, 2],
       [0, 1, 2, 2]])
于 2013-09-27T07:06:57.000 回答