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