3

特定のシーケンス長で、2 つの文字 (E と L) のすべての順列を計算しようとしています。I import itertoolsand runの場合itertools.permutation('LE', 8)、出力が得られません。明らかに、パスのみの場合、itertools.permutation('LE')LE と EL の 2 つの長い順列が得られます。私が引数'LE'と数字を持つような方法で順列を実行する方法はありますか、たとえば3は次のようになります:

LLL
EEE
LLE
EEL
LEE
ELL
ELE
LEL

前もって感謝します。

4

1 に答える 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']
于 2013-03-16T22:37:22.507 に答える