Python で順列と組合せ

Posted Thu Jul 04 2013

itertools を使うと簡単にできるみたいです.

>>> import itertools
>>> for c in itertools.combinations([0, 1, 2, 3, 4], 3):
...   print c
... 
(0, 1, 2)
(0, 1, 3)
(0, 1, 4)
(0, 2, 3)
(0, 2, 4)
(0, 3, 4)
(1, 2, 3)
(1, 2, 4)
(1, 3, 4)
(2, 3, 4)
>>> for p in itertools.permutations([0, 1, 2, 3, 4], 3):
...   print p
...
(0, 1, 2)
(0, 1, 3)
(0, 1, 4)
(0, 2, 1)
(0, 2, 3)
(0, 2, 4)
(0, 3, 1)
(0, 3, 2)
(0, 3, 4)
(0, 4, 1)
(0, 4, 2)
(0, 4, 3)
(1, 0, 2)
(1, 0, 3)
(1, 0, 4)
(1, 2, 0)
(1, 2, 3)
(1, 2, 4)
(1, 3, 0)
(1, 3, 2)
(1, 3, 4)
(1, 4, 0)
(1, 4, 2)
(1, 4, 3)
(2, 0, 1)
(2, 0, 3)
(2, 0, 4)
(2, 1, 0)
(2, 1, 3)
(2, 1, 4)
(2, 3, 0)
(2, 3, 1)
(2, 3, 4)
(2, 4, 0)
(2, 4, 1)
(2, 4, 3)
(3, 0, 1)
(3, 0, 2)
(3, 0, 4)
(3, 1, 0)
(3, 1, 2)
(3, 1, 4)
(3, 2, 0)
(3, 2, 1)
(3, 2, 4)
(3, 4, 0)
(3, 4, 1)
(3, 4, 2)
(4, 0, 1)
(4, 0, 2)
(4, 0, 3)
(4, 1, 0)
(4, 1, 2)
(4, 1, 3)
(4, 2, 0)
(4, 2, 1)
(4, 2, 3)
(4, 3, 0)
(4, 3, 1)
(4, 3, 2)