【发布时间】:2013-06-14 12:03:05
【问题描述】:
我有一个 in if-elif-elif-else 语句,其中 99% 的时间执行 else 语句:
if something == 'this':
doThis()
elif something == 'that':
doThat()
elif something == 'there':
doThere()
else:
doThisMostOfTheTime()
这个构造做了很多,但是由于它在遇到 else 之前遍历了所有条件,我觉得这不是很有效,更不用说 Pythonic 了。另一方面,它确实需要知道是否满足这些条件中的任何一个,因此无论如何它都应该对其进行测试。
有谁知道这是否以及如何更有效地完成,或者这仅仅是最好的方法吗?
【问题讨论】:
-
你能
sort运行你的 if/else... 链的东西吗,这样一个条件匹配的所有元素都在一端,其余的都是在另一个?如果是这样,您可以看看这是否更快/更优雅。但请记住,如果没有性能问题,那么担心优化还为时过早。 -
这三种特殊情况有什么共同点吗?例如,您可以做
if not something.startswith("th"): doThisMostOfTheTime()并在else子句中做另一个比较。 -
@kramer65 如果是这么长的 if/elif 链......它可能会很慢,但请确保真正profile您的代码并从优化任何部分开始大部分时间。
-
这些比较是对
something的每个值执行一次,还是对同一个值执行多次类似的比较?
标签: python performance if-statement