在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
重复(可能的递归?),但我似乎无法理解算法应该是什么样子。
任何帮助?
答案 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