gpt4 book ai didi

python - 两个列表(男孩和女孩)的所有可能(一夫一妻制)配对

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:46 24 4
gpt4 key购买 nike

我有这两个列表:

boys  = [1,2,3]
girls = [1,2,3]

你将如何建立所有可能的(一夫一妻制)配对[男孩,女孩]男孩女孩只有 3 个,我认为这是所有可能配对的列表:

[
[[1,1], [2,2], [3,3]],
[[1,1], [2,3], [3,2]],
[[1,2], [2,1], [3,3]],
[[1,2], [2,3], [3,2]],
[[1,3], [2,1], [3,2]],
[[1,3], [2,2], [3,1]]
]

一般情况下(以上述格式)您会怎么做?这就是我能够想到的......

pairs = list(itertools.product(boys, girls))
possible_pairings = []
for i, p in enumerate(pairs):
if i % len(boys) == 0:
print
print list(p),
# possible_pairings.append(pairing)

... 给出了这个输出。

[1, 1] [1, 2] [1, 3]
[2, 1] [2, 2] [2, 3]
[3, 1] [3, 2] [3, 3]

您将如何找到所有可能的配对(上面针对特定示例写出)?这些就像您必须将 3x3 矩阵的元素相乘(以找到其行列式)的 6 种方法。 :)

Sven 的答案差不多(加上我的enumerate)

possible_pairings = []
possible_pairings_temp = []
boys = ["b1", "b2", "b3"]
girls = ["g1", "g2", "g3"]

for girls_perm in itertools.permutations(girls):
for i, (b, g) in enumerate(zip(boys, girls_perm)):
possible_pairings_temp.append([b, g])
if (i + 1) % len(boys) == 0: # we have a new pairings list
possible_pairings.append(possible_pairings_temp)
possible_pairings_temp = []
print

print possible_pairings

这完全满足问题中的格式。

最佳答案

你所描述的是一个集合的排列。只需按照给定的顺序留下男孩,然后遍历女孩的所有排列——这将为您提供所有可能的配对:

boys = ["b1", "b2", "b3"]
girls = ["g1", "g2", "g3"]
for girls_perm in itertools.permutations(girls):
for b, g in zip(boys, girls_perm):
print b + g,
print

打印

b1g1 b2g2 b3g3
b1g1 b2g3 b3g2
b1g2 b2g1 b3g3
b1g2 b2g3 b3g1
b1g3 b2g1 b3g2
b1g3 b2g2 b3g1

关于python - 两个列表(男孩和女孩)的所有可能(一夫一妻制)配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com