Я не знаю, приведет ли попытка найти более короткое выражение вышеупомянутой логики к более читаемому коду; возможно нет. Но вы можете переработать логику «как есть» в более математическую формулировку:
def boo(x, y):
p = (x, y)
return (1 if p in ((3, 4), (4, 2)) else
2 if p == (4, 1) else
3 if p == (5, 1) else
4 if p == (3, 1) else
None)
Другой вариант - использовать словарь:
def boo(x, y):
return {(3,4):1, (4,2):1, (4,1):2, (5,1):3, (3,1):4}.get((x, y), None)
Если вы знаете, что все значения будут соответствовать указанным случаям, вы можете написать [(x, y)]
вместо .get((x, y), None)
.