Beh*_*ton 2 python if-statement
我有一个"if decision tree",我想知道是否可以优化它:
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
Run Code Online (Sandbox Code Playgroud)
包括所有情况,我正在尝试使用(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
Run Code Online (Sandbox Code Playgroud)
您甚至可以更进一步思考您的支票的作用:如果任何数字为2,则返回另一个数字.
if a == 2:
return b
elif b == 2:
return a
else:
return 2
Run Code Online (Sandbox Code Playgroud)
通常,您当然也可以创建一个精确的映射,例如使用字典,它允许您直接查找结果(而不是具有复杂的if/else结构).但是当你确定结果的逻辑确实适合单个句子时,那么你应该真正尝试以保持简洁逻辑完整的方式实现它.否则,很难发现错误(例如,我花了一些时间来验证你的if/else代码是否真的按你所说的那样做).当然,您可以在单元测试中始终使用这些不同的可能组合,以确保您的逻辑实际涵盖了所有这些.