扫描一系列条件的列表
scan list for a range of conditions
具有元素:
- 数据列表:L
- 目标值:目标
- 边界:# 正数
- 方法:search_combination(data,target) 其中returns一个列表
我想把这些放在一个方法中,一遍又一遍地调用 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]
具有元素:
- 数据列表:L
- 目标值:目标
- 边界:# 正数
- 方法:search_combination(data,target) 其中returns一个列表
我想把这些放在一个方法中,一遍又一遍地调用 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]