2015-06-30 70 views
2

假設我們有一對元組的元組可以有不同的長度。讓我們稱他們爲元組t1t2從itertools.combinations中刪除特定組合

t1 = ('A', 'B', 'C') 
t2 = ('d', 'e') 

現在,我計算從兩元組使用itertools長度爲2的所有組合:

import itertools 
tuple(itertools.combinations(t1 + t2, 2)) 

Itertools發生器產生的所有可能的組合,但我只需要那些發生元組之間;預期的輸出是

(('A', 'd'), ('A', 'e'), ('B', 'd'), ('B', 'e'), ('C', 'd'), ('C', 'e')) 

我想知道什麼是最好的方法來消除不需要的組合。

回答

7

您需要itertools.product

>>> t1 = ('A', 'B', 'C') 
>>> t2 = ('d', 'e') 
>>> from itertools import product 
>>> 
>>> list(product(t1,t2)) 
[('A', 'd'), ('A', 'e'), ('B', 'd'), ('B', 'e'), ('C', 'd'), ('C', 'e')] 

如果你正在處理短元組你可以簡單地做這個工作有一個列表理解:

>>> [(i,j) for i in t1 for j in t2] 
[('A', 'd'), ('A', 'e'), ('B', 'd'), ('B', 'e'), ('C', 'd'), ('C', 'e')]