前提・実現したいこと
二次元配列の全通りの組み合わせをfor文で回し、それぞれのリストで処理をしたい
発生している問題・エラーメッセージ
list index out of range
該当のソースコード
python
1import itertools 2 3#リスト型を用いた処理 4def ROMI(x): 5 ROMI = (0.02*x[0] + 0.05*x[1] + 0.01*x[2] + 0.06*x[3] + 0.04*x[4] + 0.07*x[5]) / (x[0]+x[1]+x[2]+x[3]+x[4]+x[5]) 6 return ROMI 7 8all_comb = [] 9seq = [] 10opt = [] 11ROMI_A = 0 12ROMI_B = 0 13 14for i in range(0,4): 15 seq.append(i) 16 17#5C2 18for v in itertools.combinations(seq, 2): 19 comb = [int(a) for a in v] 20 all_comb.append(comb) 21print(all_comb) 22 23for j in range(len(all_comb)): 24 X = all_comb[j] 25 ROMI_A = ROMI(X)#エラー該当箇所 26 27 if ROMI_A > ROMI_B: 28 ROMI_B = ROMI_A 29 opt = X 30 else: 31 pass 32print(opt)
試したこと
itertoolsだとリストがstr型になるためint型に直したのですが、入れ子構造のせいか、listの範囲が合わせられませんでした。
補足情報(FW/ツールのバージョンなど)
Jupiter labを使用しています。
拙いコードですが、回答いただけると嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。