### 前提・実現したいこと
以下の場合の組み合わせの数と、組み合わせのリストを作成したいです。
##問題
[1,2,3,4]のリストがあります。
この組み合わせを全て出したいです。
更に[1,2,3,4]を含んだ表が3つあります。
この表の間での組み合わせを全て出したいです。
例
表1[1,2,3,4]
表2[1,2,3,4]
表3[1,2,3,4]
組み合わせ
表1-1 表2-1 表3-1・・・
n通り
特に困ったこと
各表において、1or1’が選べます。
同一の表内で1と1’は同時に選べません。
※表1で1を選択し、表2で1’は可能
この場合、どういったプログラムをかけばいいのか、お教えいただけますでしょうか。
何卒よろしくお願い致します。
該当のソースコード
単純な組み合わせまではやってみたのですが、ここから先がわかりません。
python
1import itertools 2 3#表 4la = [1,2,3,4] 5la_dash = ['1\'',2,3,4] 6##lb = [1,2,3,4] 7##lc = [1,2,3,4] 8 9def pair(l): 10 11 j = 0 12 p = [] 13 14 for i in range(1,5): 15 for pair in itertools.combinations(l, i): 16 print(pair) 17 p.append(pair) 18 j += 1 19 print(j) 20 return p 21 22p1 = pair(la) 23p1_dash = pair(la_dash) 24 25p2 = p1 #表2の組み合わせ 26p3 = p1 #表3の組み合わせ 27p2_dash = p1_dash #表2のダッシュあり 28p3_dash = p1_dash #表3のダッシュあり 29 30al = list(itertools.product(p1, p2, p3)) 31all = set(al) 32print(len(all)) 33 34##al = list(itertools.product(p1, p2, p3, p1_dash, p2_dash, p3_dash)) 35##all = set(al) 36##print(len(all))
(1,)
(2,)
(3,)
(4,)
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)
(1, 2, 3, 4)
15
15通り
##計算の不明点諸々
上記のプログラムでは、
al = list(itertools.product(p1, p2, p3, p1_dash, p2_dash, p3_dash))
とコメントアウトしてあります。
これは「1と1’のリストを全部くっつけて、重複をカットすればいい」と試した結果です。
そもそもこの組み合わせの計算方法自体が間違っているのかも…という自信のなさもあり、組み合わせに詳しい方にご意見伺いたいと質問致しました。
あなたの回答
tips
プレビュー