如何根据特定元素获取列表元素的所有组合?

时间:2019-07-17 01:13:30

标签: python list combinations

我目前正在尝试根据特定元素获取列表元素的所有组合。

我尝试使用itertools.combination方法,但它只是为我提供了列表元素的所有组合。

l = ['it', 'them', 'BMW', 'car']

c = list(itertools.combinations(l, 2))

# Output
[('it', 'them'), ('it', 'BMW'), ('it', 'car'), ('them', 'BMW'), ('them', 'car'), 
('BMW', 'car')]

更具体地说,我希望将是代词的元素与不是代词的其他元素(即特定的选定元素)的所有组合。因此所需的输出如下:

[('it', 'BMW'), ('it', 'car'), ('them', 'BMW'), ('them', 'car')]

有人知道我怎么做吗?谢谢。

修改

更具体地说,我想您可能会说,我很好奇itertools.combination是否具有一种机制,您可以选择特定元素并与之产生组合。

1 个答案:

答案 0 :(得分:3)

使用itertools.product

In [1]: a = ['it', 'them']

In [2]: b = ['bmw', 'car']

In [3]: from itertools import product

In [4]: list(product(a, b))
Out[4]: [('it', 'bmw'), ('it', 'car'), ('them', 'bmw'), ('them', 'car')]