У меня есть 3 списка:
a = {1:10,2:12,3:14}
b = {1:5,2:4,3:8}
c = {1:6,2:7,3:3}
Теперь я могу получить все перестановки с помощью itertools
from itertools import combinations
input = ['a', 'b', 'c', 'd']
output = sum([list(map(list, combinations(input, i))) for i in range(len(input) + 1)], [])
но теперь мой вопрос: как рассчитать общее число, сложив вместе a + b + c для каждой комбинации и получив наименьшее отклонение между ними.
Он также должен следить за тем, чтобы ни один индекс не использовался более одного раза.
Так, например, мы могли бы сделать:
A1 + B3 + C2 = 10 + 8 + 7 = 25
A2 + B1 + C1 = 12 + 5 + 6 = 23
A3 + B2 + C3 = 14 + 4 + 3 = 21
Итак, мы можем видеть, что у нас есть отклонение 4 (от самого высокого до самого низкого). Я не уверен на 1005, что это лучшая комбинация, но это просто для демонстрации.
Эта программа должна иметь возможность адаптироваться для работы с большим количеством ценностей.
Список A никогда не будет больше, чем B или C, поскольку иногда они могут иметь больше, чем первый список.
спасибо, что нашли время.
output = sum([list(map(list, combinations(input, i))) for i in range(len(input) + 1)], [])
; Вам, может быть, стоит это объяснить. Во-вторых, действительно непонятно, чего вы пытаетесь достичь. Вы не уверены, что A1 + B3 + C2 - лучшая комбинация для чего? - person Stef   schedule 17.12.2020