首页 > 解决方案 > 给定 if 语句如何优化 if 语句:> 或 <

问题描述

如何使类似于下面的代码运行得更快。

我知道您可以将字典用于相等的 if 语句,但不确定是否使用这个。

Delta = 3
if (x - y) >= Delta:
    pass
elif y < Delta:
    pass
else:
    pass 

标签: pythonif-statement

解决方案


这是一个字典查找的示例,如果您真的想使用一个:

def do_something():
    pass

def do_something_else_1():
    pass

def do_something_else_2():
    pass

{
    y < Delta: do_something_else_1,
    x - y >= Delta: do_something
}.get(True, do_something_else_2)()

但我可以向你保证,这会运行得更慢(主要是因为现在所有条件都被贪婪地评估,而不是懒惰地评估)。您无法使用字典查找优化现有代码的原因是字典查找擅长计算哈希,然后计算与缩小的搜索空间的相等性比计算与整个搜索空间的相等性更快。由于这个好处,您必须首先支付构建哈希表的前期成本。

但是,您没有在这里检查相等性。您正在使用不等式函数<>=,这与哈希表的概念不符。与使用 a 本身相比,a 的哈希bool(此不等式函数的结果)的计算速度并不快bool,这意味着在此处构造哈希表将超过之后立即使用构造的哈希表所节省的时间。由于每次xy可能发生变化,因此您无法缓存此哈希表,这意味着您每次都要承受构建成本。

保持代码不变。


推荐阅读