質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1375閲覧

【python】組み合わせの一覧と組み合わせ数の求め方が知りたい

MKP

総合スコア26

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/02 05:51

編集2021/11/02 06:42

### 前提・実現したいこと
以下の場合の組み合わせの数と、組み合わせのリストを作成したいです。

##問題
[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’のリストを全部くっつけて、重複をカットすればいい」と試した結果です。
そもそもこの組み合わせの計算方法自体が間違っているのかも…という自信のなさもあり、組み合わせに詳しい方にご意見伺いたいと質問致しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2021/11/02 06:20

欲しい結果(リスト?)がよく分かりませんので具体的に提示ください。 膨大になりそうであれば、[1,2,3]の2つの表なりのより単純なケースでかまいません。
MKP

2021/11/02 06:31

コメントありがとうございます。 la = [1,2,3,4]の例ですと、 1のみ 2のみ 3のみ 4のみ から 1と2 1と3  から 1234まで の重複のない組み合わせを出力したいです。 更にそれが3つの表に分かれており、表間の組み合わせも出したいのです。 説明不足あれば、お手数でも更にコメントいただければ幸いです。
quickquip

2021/11/02 06:40

やりたいことを人間相手に日本語で説明できない状態では、コードが書けないのは当然のような気がします。(私も欲しい結果がよく分かりませんでした) > [1,2,3]の2つの表なりのより単純なケースでかまいません。 これも完全に同意です。 もっと単純な例で、欲しいもの(完全な答え)を手で書き出して質問に載せた方が早いと思いました。
MKP

2021/11/02 06:45

コメントありがとうございます。 もっとストレートな表現で例示する必要があるのですね。 私の質問力のなさも問題解決を遠ざけそうなので、投稿自体を削除して、また内容がまとまればこのサイトで質問させていただければと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問