前提
次のような2つのリストがあります。
python
1x = [0.1, 4, 5] 2y = [ 3 [3, 9, 0], 4 [1, 0.5, 5], 5 [3, 7, 2] 6]
実現したいこと
xというリストとyというリストのそれぞれの値を用いて次のような計算をしたいです。
python
1①(x[0]x[1]y[0][0]+x[0]x[2]y[0][1]+x[1]x[2]y[0][2])/x[0]x[1]+x[0]x[2]+x[1]x[2]=0.27272727 2②(x[0]x[1]y[1][0]+x[0]x[2]y[1][1]+x[1]x[2]y[1][2])/x[0]x[1]+x[0]x[2]+x[1]x[2]=4.81578947 3③(x[0]x[1]y[2][0]+x[0]x[2]y[2][1]+x[1]x[2]y[2][2])/x[0]x[1]+x[0]x[2]+x[1]x[2]=2.13875598
考えたこと
まず、分母の計算を実装するためには、for文を用いてxとyを掛け合わした後にsum関数を用いて足し算するのがいいかなと思いました。
この思考で掛け合わせるところまでのコードをfor文で書いて見ると、以下のような値が出てきました。
出力結果の最初の値0はx[0]x[1]y[0][0]の値が出力されたと考えられるので照らし合わせて見ると、
x[0]x[1]y[0][0] = 0.143 = 1.2なので異なる値が出力されてしまいました。
どのようにコードを書いたら、実現したいことが実現できるのでしょうか?
python
1x = [0.1, 4, 5] 2y = [ 3 [3, 9, 0], 4 [1, 0.5, 5], 5 [3, 7, 2] 6] 7 8for random_1 in range(len(x)): 9 for random_2 in range(len(x[1:])): #range(len(x[1:]))としたのはx[0]x[1]やx[1]x[2]のように必ず片方のx[]はもう一つのx[]よりも大きくなっているからです。 10 for random_3 in y: #二次元リストyのy[0]からy[2]をそれぞれ抜き出しています。 11 for random_4 in random_3: #y[0][0]からy[2][2]を抜き出しています。 12 random = x[random_1]*x[random_2]*random_4 13 print(random) 14#出力結果 150.0 160.05000000000000001 170.020000000000000004 180.0 192.0 200.8 210.0 222.0 230.8 240 2580 2632 270.0 282.5 291.0 300 31100 3240
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/07/02 13:28