我有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的偏差(从最高到最低)。我不确定这是否是最好的组合,但它只是为了演示
这个程序应该能够适应更多的价值观
列表“A”永远不会比“B”或“C”大,因为它们有时会比第一个列表多
谢谢你花时间
你的问题很不清楚,很难弄清楚你想做什么。我猜你有三组不同的数字,你打算考虑所有可能的三元组,每次从一组中挑选一个数字。然后,您需要计算通过对三元组求和得到的结果的范围
首先,我们用您的字典创建一个列表(注意,在您的问题
a
、b
和c
中,字典而不是列表):此列表的大小不限于3。如果你有更多的字典,你可以创建一个更长的列表,例如
discts = [a, b, c, d, e, ...]
然后,我们将字典的vlues存储在一个列表中:
我们现在准备生成所有可能的三元组和相应的和。为此^{} 派上了用场:
最后,结果范围可计算如下:
旁注:
input
是Python中的内置函数。不要用input
来命名函数或变量相关问题 更多 >
编程相关推荐