优化Python中的树

Behoston

我有一个“如果决策树”,我想知道是否有可能对其进行优化:

    def s(a, b):
    """
    :param a: 0,1,2
    :param b: 0,1,2
    :return: 0,1,2
    """
    if a == 0:
        if b == 0:
            return 2
        elif b == 1:
            return 2
        else:  # b == 2
            return 0
    elif a == 1:
        if b == 0:
            return 2
        elif b == 1:
            return 2
        else:  # b == 2
            return 1
    else:  # a==2
        if b == 0:
            return 0
        elif b == 1:
            return 1
        else:  # b==2
            return 2

包括所有情况,我尝试使用(a,b)==(1,2)或(a,b)==(2,1)返回1,返回0时相同。其他情况返回2,但是比较慢

编辑:我已经测试了(时间和有效(全部有效))所有建议的“ ifs”,并且:s是我的显式函数ss是第一个建议的函数sss是第二个建议的函数等。在这里,我有配置文件: 剖析所有功能

只需通过比较元组来显式检查这些值,然后2在所有其他情况下返回

v = (a, b)
if v == (1, 2) or v == (2, 1):
    return 1
elif v == (0, 2) or v == (2, 0):
    return 0
else:
    return 2

您甚至可以更进一步思考一下支票的用途:如果任何一个数字为2,则返回另一个数字。

if a == 2:
    return b
elif b == 2:
    return a
else:
    return 2

通常,当然,您当然也可以创建精确的映射,例如使用字典,该映射允许您直接查找结果(而不是具有复杂的if / else结构)。但是,当确定结果的逻辑确实适合一个句子时,那么您应该真正尝试以保持简洁逻辑完整的方式来实现它。否则,将很难发现错误(例如,我花了一些时间来验证您的if / else代码是否确实按照您的意愿进行了操作)。当然,您始终可以在单元测试中使用那些可能的不同组合,以确保您的逻辑实际上涵盖了所有内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章