逐项平衡2套值

时间:2019-01-11 19:25:16

标签: python list project balance

我的问题似乎与其他问题相似,但是我还没有找到与我所需要的东西遥不可及的东西(以防万一。当我发现自己有一个有限的负值列表和2个其他有限的正值集(浮点数)时,我有一个项目(没有该项目的详细信息)。请看下面的示例集:

negative_values = [-0.246497, -0.341068]
positive_values_1 = [0.522148, 0.923764, 0.112573, 0.401668]
positive_values_2 = [0.281474]

这些集的大小范围(空到N号)。我需要做的是取第一个正数集中的值,然后尝试(可能无法根据集合而定),将负数集中的值逐个值相加,使它们成为零。

如果仅第一个设置不可能,则使用第二个设置;如果仍然不可行,则将“ negative_values”中的尽可能多的值设为0。

使用上述设置,将呈现出以下内容:

def cancelOut(negative_values, positive_values_1, positive_values_2):
    # Algorith doing something

new_negative_values = [0, 0]
new_positive_values_1 = [0, 0.858347, 0.112573, 0.401668]
new_positive_values_2 = [0.281474]

发生的是,positive_values_1中的第一个值使负值0中的第一个值增加了第二个值,使其更接近于0。然后,positive_values_1中的第二个值的一部分使负值0中的第二个值成为了第二个值,然后完成了算法。我只想将正集中的值一一添加到negative_value中的值,直到它们全为0或直到正值全为0。

我不知道是否有一种简单的方法来执行此操作,或者我是否需要逐个值具体遍历每个设置值并计算所需的值。

提前感谢大家!

1 个答案:

答案 0 :(得分:0)

这是一个起点-这将是一种逻辑练习,并保持对事物的跟踪。

a = negative_values
b = positive_values_1
c = positive_values_2

ab的第一项开始。

add the a and b item together  
   if the result is > 0 change a's item to 0  
      and get a's next item to use in the next iteration  
          use the result for the b item in the next iteration
   if the result is 0 change a and b's item to 0  
       and get the next items from a and b to use in the next iteration  
   if the result is < 0 change b's item to zero  
       and get b's next item for use in the next iteration
           use the result for the a item in the next iteration   
if you get a StopIteration for a you are done
    make the current item/index of b (or c) = the result
if you get a StopIteration for b, switch to c
if you get a StopIteration for c you are done
    make the current item/index of a = the result
repeat