扫描一系列条件的列表

scan list for a range of conditions

具有元素:

我想把这些放在一个方法中,一遍又一遍地调用 search_combination,returns 满足条件时该方法的结果。 新方法首先在 search_combination 中尝试 "target"(如果条件满足则 returns 结果),然后尝试 target+-range(bound) 和 returns 条件最接近目标的值. 主要问题是编写用于尝试 target+-range(bound) 的代码。

这是我的 atm:

def main(data,target,bound):
    result=search_combination(data,target)
    if result !=[]: #condition is met
       return [result,target]
    else:
       for i in range(bound):
           temp=i
           result=search_combination(data,target+temp)
           if result !=[]:
              temp=target+temp
              break
           result=search_combination(data,target-temp)
           if result !=[]:
              temp=target-temp
              break
       return [result,temp]

这段代码如何才能更好?

如果你想交替使用 +/-,你可以这样做

   import math

   ...

   for i in range(bound):
       temp=i
       emptyFound = False
       for j in range(2):
         result=search_combination(data,target+(math.pow(-1, j) * temp))
         if result !=[]:
            emptyFound = True
            break
       if emptyFound == True:
         break;
   return [result,temp]