python-3.x 值的组合,基于列中的相应值

rnmwe5a2  于 4个月前  发布在  Python
关注(0)|答案(1)|浏览(72)

我有一个名为Volume的列,其中包含的值类似于[1.638, 0.625 , 5.001],总值为52000。
Part_Packing_Density列中包含的值与[0.73, 0.20, 0.3]列中包含的值一样,合计值为52000。
现在将两个柱的关系描述为,对于体积1.638的填充密度是0.73,对于体积0.625的填充密度是0.20,并且对于所有值都是类似的。
生成填充密度值的所有可能组合,使相应体积值的总和约等于40000。
例如:comb1 = [[0.73, 0.20, 0.3, 0.40]
因此,这两个体积值分别为
[1.638, 0.625 , 5.001, 44.621 ]的值。“
现在如果我把这些体积值相加,比如1.638+0.625+5.00+44.621......+......
应该是40000左右。
我尝试在一列中生成组合,但这不是最终目标。
我想有基于相应值相加的组合。就像我上面解释的那样。
我们将感激您的帮助。

jaxagkaj

jaxagkaj1#

你在找类似的东西吗?

import itertools

volume = [1.638, 0.625, 5.001, 44.621]  
packing_density = [0.73, 0.20, 0.3, 0.40]  
target_sum = 40000
tolerance = 100  # deviation

def combinations_with_sum(data, target_sum, tolerance):
    for i in range(1, len(data) + 1):
        for comb in itertools.combinations(data, i):
            volume_sum = sum(volume[j] for j in range(len(data)) if packing_density[j] in comb)
            if abs(volume_sum - target_sum) <= tolerance:
                yield comb

result = list(combinations_with_sum(packing_density, target_sum, tolerance))
print(result)

字符串

相关问题