2015-06-30 73 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')]