メモ帳

楽しいアウトプットの場所

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)