Ho un'istruzione in if-elif-elif-else in cui il 99% delle volte viene eseguita l'istruzione else:
if something == 'this':
doThis()
elif something == 'that':
doThat()
elif something == 'there':
doThere()
else:
doThisMostOfTheTime()
Questo costrutto è fatto molto , ma poiché supera ogni condizione prima di colpire il resto, ho la sensazione che non sia molto efficiente, figuriamoci Pythonic. D'altra parte, ha bisogno di sapere se una di queste condizioni è soddisfatta, quindi dovrebbe comunque testarla.
Qualcuno sa se e come questo potrebbe essere fatto in modo più efficiente o è semplicemente il miglior modo possibile per farlo?
if not something.startswith("th"): doThisMostOfTheTime()
e fare un altro confronto nella else
clausola.
something
oppure confronti simili vengono eseguiti più volte sullo stesso valore?
sort
incatenare le cose su cui stai eseguendo il tuo if / else ..., in modo tale che tutti gli elementi per i quali una delle condizioni corrisponderà siano a un'estremità e tutto il resto all'altra? Se è così, potresti vedere se è più veloce / più elegante o meno. Ma ricorda, se non ci sono problemi di prestazioni, è troppo presto per preoccuparsi dell'ottimizzazione.