繁体   English   中英

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

[英]Declaring and populating 2D array in python

我想在python中声明并填充2d数组,如下所示:

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:列表索引超出范围异常。 有任何想法吗?

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

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

尝试这个:

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]那样访问

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM