Python - 显示列表或字符串集的每个排列

时间:2016-04-27 21:49:32

标签: python string permutation

例如,我有以下列表:

['ABC','DEF','GHI','JKL']

据我估算,应该有26种组合,即

ABCDEFGHIJKL
ABCDEFJKLGHI
ABCGHIDEFJKL
ABCGHIJKLDEF
ABCJKLDEFGHI
ABCJKLGHIDEF
...

我将如何在Python中执行此操作?

由于

2 个答案:

答案 0 :(得分:3)

您正在描述itertools.permutations的基本用法:

>>> import itertools
>>> L = ['ABC','DEF','GHI','JKL']
>>> for permutation in itertools.permutations(L):
...     print ''.join(permutation)
...     
ABCDEFGHIJKL
ABCDEFJKLGHI
ABCGHIDEFJKL
ABCGHIJKLDEF
...
JKLGHIDEFABC

答案 1 :(得分:0)

使用itertools的一种方法:

>>> import itertools
>>> print list(itertools.permutations(['ABC','DEF','GHI','JKL'], 4))
[('ABC', 'DEF', 'GHI', 'JKL'), ('ABC', 'DEF', 'JKL', 'GHI'), ('ABC', 'GHI', 'DEF', 'JKL'), ('ABC', 'GHI', 'JKL', 'DEF'), ('ABC', 'JKL', 'DEF', 'GHI'), ('ABC', 'JKL', 'GHI', 'DEF'), ('DEF', 'ABC', 'GHI', 'JKL'), ('DEF', 'ABC', 'JKL', 'GHI'), ('DEF', 'GHI', 'ABC', 'JKL'), ('DEF', 'GHI', 'JKL', 'ABC'), ('DEF', 'JKL', 'ABC', 'GHI'), ('DEF', 'JKL', 'GHI', 'ABC'), ('GHI', 'ABC', 'DEF', 'JKL'), ('GHI', 'ABC', 'JKL', 'DEF'), ('GHI', 'DEF', 'ABC', 'JKL'), ('GHI', 'DEF', 'JKL', 'ABC'), ('GHI', 'JKL', 'ABC', 'DEF'), ('GHI', 'JKL', 'DEF', 'ABC'), ('JKL', 'ABC', 'DEF', 'GHI'), ('JKL', 'ABC', 'GHI', 'DEF'), ('JKL', 'DEF', 'ABC', 'GHI'), ('JKL', 'DEF', 'GHI', 'ABC'), ('JKL', 'GHI', 'ABC', 'DEF'), ('JKL', 'GHI', 'DEF', 'ABC')]
>>> print len(list(itertools.permutations(['ABC','DEF','GHI','JKL'], 4)))
24