我有一条if-elif-elif-else语句,其中99%的时间执行else语句:
if something == 'this':
doThis()
elif something == 'that':
doThat()
elif something == 'there':
doThere()
else:
doThisMostOfTheTime()
这个构造完成了很多,但是由于它在碰到其他情况之前会遍历所有条件,所以我觉得这不是很有效,更不用说Pythonic了。另一方面,它确实需要知道是否满足任何这些条件,因此无论如何都应该对其进行测试。
是否有人知道是否以及如何可以更有效地完成此工作,或者这仅仅是做到这一点的最佳方法?
这三种特殊情况有什么共同点吗?例如,您可以
—
Tim Pietzcker 2013年
if not something.startswith("th"): doThisMostOfTheTime()
在else
子句中进行另一个比较。
@ kramer65如果if / elif的链这么长,可能会很慢,但是请确保实际配置您的代码,并从最耗时的部分开始进行优化。
—
jorgeca 2013年
这些比较是对的每个值仅执行一次
—
克里斯·皮特曼
something
,还是对相同的值进行多次类似的比较?
sort
是否可以运行if / else ...链上的东西,这样一个条件将匹配的所有元素都在一端,而其余所有条件都在另一端?如果是这样,您可以看到它是否更快/更优雅。但是请记住,如果没有性能问题,现在担心优化还为时过早。