0

私のコードは私に次のエラーを与えています:

    list_subs[n][4] = np.random.normal(list_subs[n][1], list_subs[n][2])
IndexError: list assignment index out of range.

このエラーを検索しましたが、何が問題なのかまだわかりません。

編集:完全なトレースバック

トレースバック (最後の最後の呼び出し): ファイル ""、420 ​​行目、run_nodebug ファイル "C:\Documents and Settings\jhsilva\Desktop\Monte carlo\Teste.py"、71 行目、generateRandomNumbers(list_subs) ファイル "C: \Documents and Settings\jhsilva\Desktop\Monte carlo\Teste.py"、41 行目、generateRandomNumbers list_subs[n][4] = np.random.normal(list_subs[n][1], list_subs[n][2 ]) IndexError: リスト代入インデックスが範囲外です

コード

def generateRandomNumbers(list_subs):

    for n in range(len(list_subs)):

        string = list_subs[n][3]
        string = string.lower()

        if(string == "normal"):
            list_subs[n][4] = np.random.normal(list_subs[n][1], list_subs[n][2])
            print("Numero gerado:",list_subs[n][4])


variables = [v for v in variables if v not in special]


list_subs=[[0 for col in range(6)] for row in range(len(variables)-1)]

#This prints fine
print(len(list_subs))

#this prints fine too
print(list_subs[0][4])

for n in range(len(variables)):
    if n>0:
        (media,desviopadrao,distribuicao) = eval(input("For variable "+variables[n]+" input: median, std, distr \n"))
        list_subs[n-1] = [variables[n], media, desviopadrao, distribuicao]

N = eval(input("Qual o numero de iteracoes que deseja:"))

Var = []
for n in range(N):
    generateRandomNumbers(list_subs)
    Var.append(calcEq(formula))
4

1 に答える 1

3
list_subs[n-1] = [variables[n], media, desviopadrao, distribuicao]

list_subs長さ のリストのリストになるように設定しています4。これは、有効なインデックスが であることを意味します0, 1, 2, 3。あなたはgenerateRandomNumbersindex にアクセスします4が、これは無効です。


セキュリティ上の注意: 使用しないでくださいeval(input(...))。数値/タプルなどを解析したい場合ast.literal_evalは、安全な代替手段である を使用するだけです。

于 2013-08-29T11:59:48.097 に答える