2015-07-18 27 views
0

使用itertools.combinations的n種組合,下面的偉大工程:的Python:創建在項目2恆定

for letter_group in itertools.combinations(alphabet, 5): 
    print letter group 

現在我想擁有的5項第2的組合不變。有沒有辦法做到這一點?

例如,輸出將被:

(a,b,c,d,e) 
(a,b,e,f,g) 
... 
(a,b,x,y,z) 
+0

什麼是您的實際數據? –

回答

3

好吧,我想你試圖做的是使其中指定了第一個2 5元組是什麼,最後3是從一個可迭代稱爲alphabet,但最後3個不能重複使用前兩個。

如何:

start = ('a', 'b') 
for ending in itertools.combinations(set(alphabet) - set(start), 3): 
    print start + ending 
+0

我想到他的用例,開始只是一些通用的迭代。所以需要把它作爲一個集合。如果他完全掌握了控制權,那麼一定要從一開始就讓「開始」一套。 – 8one6

0

只是讓你alphabet沒有前兩個字母,完成其餘的組合,然後聯繫[「一」,「B」],結果,可運行的代碼:

# -*- coding: utf-8 -*- 
import string 
import itertools 

alphabet = string.letters[:26] 
prefix = ['a', 'b'] 

for letter_group in itertools.combinations(alphabet[len(prefix):], 3): 
    print prefix + list(letter_group)