Pythonで順列、組み合わせ
nPk通りの順列を全列挙
from itertools import permutations array = [1, 2, 3, 4] for x in permutations(array, 4): print(x)
基本的に、permutation(array, k) のkの部分がnPkになります。上のプログラムではnPk=4P4 = 4!通りの列挙になります。実行結果は以下の通りになります。
(1, 2, 3, 4) (1, 2, 4, 3) (1, 3, 2, 4) .... (4, 3, 2, 1)
では、4P3のプログラムはk=3とすればよいので以下の通りになります。
from itertools import permutations array = [1, 2, 3, 4] for x in permutations(array, 3): print(x)
実行結果は以下の通りです。
(1, 2, 3) (1, 2, 4) (1, 3, 2) ... (4, 3, 2)
nCr通りの組み合わせを全列挙
combinationsというものを使います。
from itertools import combinations array = [1, 2, 3, 4] for x in combinations(array, 3): print(x)
4C3=4C1=4通りになりますね。実行結果は以下の通りです
(1, 2, 3) (1, 2, 4) (1, 3, 4) (2, 3, 4)