如何制作以下元组列表的唯一组合

时间:2014-03-30 06:34:22

标签: python

在python中,我有一个包含以下元组的列表:

[(Bob, Tom), (GreenWood, Pearson)]

首先tuple包含名字,第二个tuple包含姓氏 PS:我给出的列表是一个示例,实际列表随着更多名称而变化

我要做的是生成所有可能生成的名称,即

- Bob GreenWood
- Bob Pearson
- Tom GreemWood
- Tom Pearson

我如何用Python或任何其他语言实现这一点。

我尝试首先使用Bob in tuple 1并与last names in tuple 2进行组合,并执行类似tuple1[1:]的操作以摆脱Bob。然后只用Tom in tuple重复(可能的递归?),但我似乎无法理解算法应该是什么样子。

任何帮助?

1 个答案:

答案 0 :(得分:3)

您可以像这样使用itertools.product

from itertools import product
names = [('Bob', 'Tom'), ('GreenWood', 'Pearson')]
for item in product(*names):
    print(item)

<强>输出

('Bob', 'GreenWood')
('Bob', 'Pearson')
('Tom', 'GreenWood')
('Tom', 'Pearson')

如果您想将可能的名称打印为字符串,则可以加入结果

print(" ".join(item))

这将产生

Bob GreenWood
Bob Pearson
Tom GreenWood
Tom Pearson