对于给定的序列长度,我一直在尝试计算两个字符(E 和 L)的所有排列。如果我import itertools
运行itertools.permutation('LE', 8)
我没有得到任何输出,显然如果我只通过itertools.permutation('LE')
我将得到两个长的排列,即 LE 和 EL。有没有办法以这样的方式运行排列,我会得到参数'LE'
和一个数字,比如 3 这将导致:
LLL
EEE
LLE
EEL
LEE
ELL
ELE
LEL
提前致谢。
对于给定的序列长度,我一直在尝试计算两个字符(E 和 L)的所有排列。如果我import itertools
运行itertools.permutation('LE', 8)
我没有得到任何输出,显然如果我只通过itertools.permutation('LE')
我将得到两个长的排列,即 LE 和 EL。有没有办法以这样的方式运行排列,我会得到参数'LE'
和一个数字,比如 3 这将导致:
LLL
EEE
LLE
EEL
LEE
ELL
ELE
LEL
提前致谢。
你想要的是笛卡尔积LE × LE × LE
。
itertools.product
与参数一起使用repeat
:
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']