Python 扫描列表以了解一系列条件
具有以下要素: 数据列表:L 目标值:目标值 界限:正数 方法:搜索组合数据,目标返回列表 我想把它们放在一个方法中,该方法反复调用search_组合,并在满足条件时返回该方法的结果。 新方法首先在search_组合中尝试target,如果满足条件则返回结果,然后尝试target+-rangebound并返回条件最近的target的值。 主要的问题是生成一个用于尝试target+-rangebound的代码 这是我的atm机: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
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循环一次尝试一个步骤,在每个步骤中尝试两个方向。如果这有道理的话。我正在寻找一种不需要复制代码行的更短的方法