我的问题似乎与其他问题相似,但是我还没有找到与我所需要的东西遥不可及的东西(以防万一。当我发现自己有一个有限的负值列表和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。
我不知道是否有一种简单的方法来执行此操作,或者我是否需要逐个值具体遍历每个设置值并计算所需的值。
提前感谢大家!
答案 0 :(得分:0)
这是一个起点-这将是一种逻辑练习,并保持对事物的跟踪。
a = negative_values
b = positive_values_1
c = positive_values_2
从a
和b
的第一项开始。
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