-1
例如,我有10个男孩和10个女孩。在python中获取可能的2组元素之间的配对
在每个配对场景中,我想将每个男孩与一个女孩配对。配对是排他性的。一旦一个男孩与一个女孩配对,男孩就不能与另一个女孩配对,反之亦然。
如何最佳地找到python中所有可能的配对方案?另外,如何用恰当的数学术语来描述这个问题。
谢谢!
编辑:在配对
例如,我有10个男孩和10个女孩。在python中获取可能的2组元素之间的配对
在每个配对场景中,我想将每个男孩与一个女孩配对。配对是排他性的。一旦一个男孩与一个女孩配对,男孩就不能与另一个女孩配对,反之亦然。
如何最佳地找到python中所有可能的配对方案?另外,如何用恰当的数学术语来描述这个问题。
谢谢!
编辑:在配对
添加约束什么像这样
from itertools import permutations
boys = ['greg', 'john', 'andy']
girls = ['lilly', 'samantha', 'tammy']
pairings = [list(zip(boys, girls_perm)) for girls_perm in permutations(girls)]
这给可能的配对
pairings =
[[('greg', 'lilly'), ('john', 'samantha'), ('andy', 'tammy')],
[('greg', 'lilly'), ('john', 'tammy'), ('andy', 'samantha')],
[('greg', 'samantha'), ('john', 'lilly'), ('andy', 'tammy')],
[('greg', 'samantha'), ('john', 'tammy'), ('andy', 'lilly')],
[('greg', 'tammy'), ('john', 'lilly'), ('andy', 'samantha')],
[('greg', 'tammy'), ('john', 'samantha'), ('andy', 'lilly')]]
哇,这是一个美丽的解决方案。谢谢! –
你想找到两个列表的所有排列? – Carcigenicate
你所描述的是一组男孩和一组女孩的笛卡尔积。你可以使用['itertools.product'](https://docs.python.org/2/library/itertools.html#itertools.product)。 – BrenBarn
@BrenBarn这不是一个笛卡儿的产品,虽然因为配对是独家 –