4

次のように、Pythonで2次元配列を宣言して入力したい:

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

3

ステータス配列に「行」を追加するのは、外側の for ループの前だけです。
そう -status[0]存在しますが、status[1]ありません。
外側の for ループの内側に移動する必要があり、status.append([])データを入力しようとする前に新しい「行」が作成されます。

于 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 に答える
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 に答える