我正在尝试编写一个大的 for 循环来执行一些嵌套逻辑。我想控制在我的函数中使用 kwarg 应用哪些比较。基本上,我有两个不同的比较,两者都由我的函数中的 kwargs 控制。目前,为了确保可以是最小化或最大化,我必须多次复制/粘贴我的 for 循环。这感觉很笨拙。
def calc_best_points(observations, min_cost=False, min_value=False):
for point in observations:
blah blah blah
if cost > best_cost:
if value > best_value:
other logic here
res.append(point)
best_cost, best_value = cost, value
基本上,我想写一些类似的东西:
if min_cost: comparison_to_apply = <
然后再往下:
if cost comparison_to_apply best_cost:
有没有办法做到这一点,或者我只需要根据我可能想做的各种比较组合复制/粘贴我的 for 循环四次?
operator
模块将运算符函数放入变量中。
import operator
def calc_best_points(observations, min_cost=False, min_value=False):
cost_compare = operator.lt if min_cost else operator.gt
value_compare = operator.lt if min_value else operator.gt
for point in observations:
# blah blah blah
if cost_compare(cost, best_cost):
if value_compare(value, best_value):
other logic here
res.append(point)
best_cost, best_value = cost, value