2014-07-20 128 views
1

我想結合2個列表並希望形成組合。Python中結合列表

a = ['ibm','dell'] 
b = ['strength','weekness'] 

我想要形成像['ibm strength','ibm weekness','dell strength','dell weakness']這樣的組合。

我試圖使用zip或連接列表。我也使用itertools,但它不給我想要的輸出。請幫忙。

a = ['ibm','dell'] 
b = ['strength','weekness'] 
c = a + b 
itertools.combinations(c,2) 
for a in a: 
    for b in b: 
     print a +b 

回答

6

您正在尋找product()。試試這個:

import itertools 

a = ['ibm', 'dell'] 
b = ['strength', 'weakness'] 

[' '.join(x) for x in itertools.product(a, b)] 
=> ['ibm strength', 'ibm weakness', 'dell strength', 'dell weakness'] 

要遍歷所有的結果,不要忘記itertools.product()返回迭代可一次食用。如果您稍後需要它,請將其轉換爲列表(如上所述,使用列表理解)並將結果存儲在變量中,以供將來使用。例如:

lst = list(itertools.product(a, b)) 
for a, b in lst: 
    print a, b 
+0

感謝奧斯卡提示響應。你也可以請你解釋爲什麼列表項目開始消失,當我循環的項目,並加入他們。正如在我使用循環後列表變空 –

+1

這是驚人的方式Óscar! ;) 好一個! –

+0

@RaghavShaligram這不會發生在我身上......請發佈導致問題的代碼。此外,你應該保存列表中的變量,以備將來使用 –