2013-03-16 52 views
3

我一直試圖計算兩個字符(E和L)的所有排列,因爲它發生在給定的序列長度。如果我import itertools和運行itertools.permutation('LE', 8)我得不到輸出,顯然,如果我只通過itertools.permutation('LE')我會得到兩個長的排列,即LE和EL。有沒有在運行,這樣我將有爭論'LE'和數字的方式排列的方式,比方說3,那麼這將導致:提前輸入的組合或排列,對於給定的長度

LLL 
EEE 
LLE 
EEL 
LEE 
ELL 
ELE 
LEL 

感謝。

回答

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'] 
+0

感謝您的回答。 – user2178117 2013-03-16 22:53:42