Eu tenho uma instrução in if-elif-elif-else na qual 99% das vezes, a instrução else é executada:
if something == 'this':
doThis()
elif something == 'that':
doThat()
elif something == 'there':
doThere()
else:
doThisMostOfTheTime()
Essa construção é feita muito , mas como ela examina todas as condições antes de atingir o else, tenho a sensação de que não é muito eficiente, muito menos Pythônico. Por outro lado, ele precisa saber se alguma dessas condições foi atendida, portanto, deve testá-la de qualquer maneira.
Alguém sabe se e como isso poderia ser feito de forma mais eficiente ou esta é simplesmente a melhor maneira possível de fazê-lo?
if not something.startswith("th"): doThisMostOfTheTime()
e fazer outra comparação na else
cláusula.
something
, ou comparações semelhantes são realizadas várias vezes no mesmo valor?
sort
acorrentar as coisas que está executando seu if / else ... de modo que todos os elementos que uma das condições corresponderá estejam em uma extremidade e todos os demais estejam na outra? Se sim, você pode ver se isso é mais rápido / mais elegante ou não. Mas lembre-se, se não houver problema de desempenho, é muito cedo para se preocupar com a otimização.