给定长度的输入的组合或排列,涉及IT技术。

3

我一直在尝试计算给定序列长度下,两个字符(E和L)的所有排列组合。如果我使用 import itertools 命令,并运行 itertools.permutation('LE', 8),那么将没有任何输出。很显然,如果我只传递 itertools.permutation('LE'),那么我将得到只有两个字符(LE和EL)的排列组合。是否有一种方法可以使用类似'LE'和数字3这样的参数来运行排列组合,以便结果为:

LLL
EEE
LLE
EEL
LEE
ELL
ELE
LEL

提前感谢您。

1个回答

4
你要的是笛卡尔积 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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接