我有一个“如果决策树”,我想知道是否有可能对其进行优化:
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] 删除。
我来说两句