[英]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.