У меня есть два списка:
boys = [1,2,3]
girls = [1,2,3]
Как бы вы построили все возможные (моногамные) пары [boy, girl]
?Имея только 3 из boys
и girls
, я думаю, что это список всех возможных пар:
[
[[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]
Как бы вы нашли все возможные пары(выписано выше для конкретного примера)? Это похоже на 6 способов умножения элементов матрицы 3х3 (чтобы найти ее определитель).:)
Почти ответ Свена (с моим 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
И это полностью удовлетворяет формату вопроса.