假设我们有一对元组,元组可以有不同的长度。我们称它们为元组TouchPhase.Stationary
和t1
:
t2
现在我使用itertools计算两个元组的长度为2的所有组合:
t1 = ('A', 'B', 'C')
t2 = ('d', 'e')
Itertools生成器产生所有可能的组合,但我只需要在元组之间发生的组合;预期的产出是
import itertools
tuple(itertools.combinations(t1 + t2, 2))
我想知道删除不需要的组合的最佳方法是什么。
答案 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')]