给定长度的输入的组合或排列

时间:2013-03-16 22:27:25

标签: python python-2.7 permutation

对于给定的序列长度,我一直在尝试计算两个字符(E和L)的所有排列。如果我import itertools并且运行itertools.permutation('LE', 8)我没有输出,显然如果我只通过itertools.permutation('LE')我会得到两个长的排列,即LE和EL。有没有办法以这样的方式运行排列:我会有参数'LE'和一个数字,比如说3会导致:

LLL
EEE
LLE
EEL
LEE
ELL
ELE
LEL

提前致谢。

1 个答案:

答案 0 :(得分:4)

您想要的是笛卡儿积LE × LE × LE

itertools.productrepeat参数一起使用:

In [60]: list(itertools.product('LE', repeat=3))
Out[60]:
[('L', 'L', 'L'),
 ('L', 'L', 'E'),
 ('L', 'E', 'L'),
 ('L', 'E', 'E'),
 ('E', 'L', 'L'),
 ('E', 'L', 'E'),
 ('E', 'E', 'L'),
 ('E', 'E', 'E')]

In [62]: [''.join(p) for p in itertools.product('LE', repeat=3)]
Out[62]: ['LLL', 'LLE', 'LEL', 'LEE', 'ELL', 'ELE', 'EEL', 'EEE']