itertools モジュールが使える。
順列は、itertools.permutations。
>>> import itertools >>> for x in itertools.permutations("ABCDE", 3): ... print x ... ('A', 'B', 'C') ('A', 'B', 'D') ('A', 'B', 'E') ('A', 'C', 'B') ('A', 'C', 'D') ('A', 'C', 'E') ('A', 'D', 'B') ('A', 'D', 'C') ('A', 'D', 'E') ('A', 'E', 'B') ('A', 'E', 'C') ('A', 'E', 'D') ('B', 'A', 'C') ('B', 'A', 'D') ('B', 'A', 'E') ('B', 'C', 'A') ('B', 'C', 'D') ('B', 'C', 'E') ('B', 'D', 'A') ('B', 'D', 'C') ('B', 'D', 'E') ('B', 'E', 'A') ('B', 'E', 'C') ('B', 'E', 'D') ('C', 'A', 'B') ('C', 'A', 'D') ('C', 'A', 'E') ('C', 'B', 'A') ('C', 'B', 'D') ('C', 'B', 'E') ('C', 'D', 'A') ('C', 'D', 'B') ('C', 'D', 'E') ('C', 'E', 'A') ('C', 'E', 'B') ('C', 'E', 'D') ('D', 'A', 'B') ('D', 'A', 'C') ('D', 'A', 'E') ('D', 'B', 'A') ('D', 'B', 'C') ('D', 'B', 'E') ('D', 'C', 'A') ('D', 'C', 'B') ('D', 'C', 'E') ('D', 'E', 'A') ('D', 'E', 'B') ('D', 'E', 'C') ('E', 'A', 'B') ('E', 'A', 'C') ('E', 'A', 'D') ('E', 'B', 'A') ('E', 'B', 'C') ('E', 'B', 'D') ('E', 'C', 'A') ('E', 'C', 'B') ('E', 'C', 'D') ('E', 'D', 'A') ('E', 'D', 'B') ('E', 'D', 'C')
組み合わせは、itertools.combinations。
>>> for x in itertools.combinations("ABCDE", 3): ... print x ... ('A', 'B', 'C') ('A', 'B', 'D') ('A', 'B', 'E') ('A', 'C', 'D') ('A', 'C', 'E') ('A', 'D', 'E') ('B', 'C', 'D') ('B', 'C', 'E') ('B', 'D', 'E') ('C', 'D', 'E')
itertools モジュールにはほかにも便利そうな関数があるので、そのうち使ってみたい。