从itertools.combinations中删除特定组合

时间:2015-06-30 06:53:16

标签: python

假设我们有一对元组,元组可以有不同的长度。我们称它们为元组TouchPhase.Stationaryt1

t2

现在我使用itertools计算两个元组的长度为2的所有组合:

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

Itertools生成器产生所有可能的组合,但我只需要在元组之间发生的组合;预期的产出是

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

我想知道删除不需要的组合的最佳方法是什么。

1 个答案:

答案 0 :(得分: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')]