在python中声明和填充2D数组

时间:2013-09-27 06:35:51

标签: python arrays

我想在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超出范围异常。有什么想法吗?

5 个答案:

答案 0 :(得分:2)

对于status

的每个值,您没有增加x中的行数
for x in range(0,4):
    status.append([])
    for y in range(0,4):
        status[x].append(randomNo())

答案 1 :(得分: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()

这将为您提供可以访问的二维词典,如val=status[0,3]

答案 2 :(得分:1)

唯一一次添加'行'到状态数组是在外部for循环之前 所以 - status[0]存在但status[1]没有 你需要将status.append([])移动到外部for循环中,然后它将创建一个新的'行'在你尝试填充它之前。

答案 3 :(得分:1)

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

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" async></script>

<script src="{{ 'jGestures.min.js' | asset_url }}" async></script>

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

答案 4 :(得分:0)

如果您对生成随机整数数组有疑问,那么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]])