前提
以下のようなリストがあります。
python
1wx = [0.375, 0.3125, 0.3125]
実現したいこと
リストwxに格納されている数字をwx[p]*wx[q]のように掛け算したいです。
計算した値は空のリストを作成し、その中に入れました。
ここで、常に、wx[p]<wx[q]とします。今回は、p=0, 1, 2かつq =1, 2となります。
つまり、
python
1wx[0]*wx[1] #p<qより 2wx[0]*wx[2] #p<qより 3wx[1]*wx[2] #p<qより
は計算したいです。
一方で、wx[0]*wx[0],wx[1]*wx[1],wx[2]*wx[2]などは除きたいです。
試したこと
今回、扱っているリストは小さいリストなので、極論、
python
1wx = [0.375, 0.3125, 0.3125] 2 3print(wx[0]*wx[1]) 4print(wx[0]*wx[2]) 5print(wx[1]*wx[2]) 6#出力結果 70.1171875 80.1171875 90.09765625
とすれば、結果は出るのですが、リストの中に格納される数字が多くなった場合に対処できないので、for文を用いて、どんな大きさのリストでも対応できるようにしたいです。
このことを踏まえて私は以下のように考えました。
python
1for num_1 in range(len(wx)): #0~2 2 for num_2 in range(len(wx[1:3])): #出力すると、1~2を想定していましたが、010101のようになってしまいました。 3 if num_1 == num_2: #等しかったら 4 continue #スキップ 5 else: 6 wx_list.append(wx[num_1]*wx[num_2]) 7print(wx_list) 8#出力結果 9[0.1171875, 0.1171875, 0.1171875, 0.09765625]
このようなコードを書くとなぜか
wx[0]*wx[1],wx[0]*wx[2],wx[1]*wx[2]の計算結果のほかに違う数字が出力されてしまいました。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/07/05 12:44