Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 扫描列表以了解一系列条件_Python_Search_Conditional Statements_Limits - Fatal编程技术网

Python 扫描列表以了解一系列条件

Python 扫描列表以了解一系列条件,python,search,conditional-statements,limits,Python,Search,Conditional Statements,Limits,具有以下要素: 数据列表:L 目标值:目标值 界限:正数 方法:搜索组合数据,目标返回列表 我想把它们放在一个方法中,该方法反复调用search_组合,并在满足条件时返回该方法的结果。 新方法首先在search_组合中尝试target,如果满足条件则返回结果,然后尝试target+-rangebound并返回条件最近的target的值。 主要的问题是生成一个用于尝试target+-rangebound的代码 这是我的atm机: def main(data,target,bound): r

具有以下要素:

数据列表:L 目标值:目标值 界限:正数 方法:搜索组合数据,目标返回列表 我想把它们放在一个方法中,该方法反复调用search_组合,并在满足条件时返回该方法的结果。 新方法首先在search_组合中尝试target,如果满足条件则返回结果,然后尝试target+-rangebound并返回条件最近的target的值。 主要的问题是生成一个用于尝试target+-rangebound的代码

这是我的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]

谢谢你的评论。但边界表示距离目标的最大距离。for循环一次尝试一个步骤,在每个步骤中尝试两个方向。如果这有道理的话。我正在寻找一种不需要复制代码行的更短的方法