Ich habe eine in if-elif-elif-else-Anweisung, in der 99% der Zeit die else-Anweisung ausgeführt wird:
if something == 'this':
doThis()
elif something == 'that':
doThat()
elif something == 'there':
doThere()
else:
doThisMostOfTheTime()
Dieses Konstrukt wird viel gemacht , aber da es alle Bedingungen durchläuft, bevor es die anderen trifft, habe ich das Gefühl, dass dies nicht sehr effizient ist, geschweige denn Pythonic. Auf der anderen Seite muss es wissen, ob eine dieser Bedingungen erfüllt ist, also sollte es es trotzdem testen.
Weiß jemand, ob und wie dies effizienter gemacht werden könnte oder ist dies einfach der bestmögliche Weg, dies zu tun?
if not something.startswith("th"): doThisMostOfTheTime()
einen weiteren Vergleich in der else
Klausel durchführen.
something
oder werden ähnliche Vergleiche mehrmals mit demselben Wert durchgeführt?
sort
die Dinge, auf denen Sie Ihre if / else ... -Kette ausführen, so dass alle Elemente, für die eine der Bedingungen übereinstimmt, an einem Ende und alle anderen am anderen Ende sind? Wenn ja, könnten Sie sehen, ob das schneller / eleganter ist oder nicht. Denken Sie jedoch daran, dass es zu früh ist, sich über die Optimierung Gedanken zu machen, wenn es keine Leistungsprobleme gibt.