Python中两种多条件判断写法哪种性能更优、执行速度更快?
Python多条件if判断两种写法的性能与优劣对比
我们直接从执行速度、综合表现两个维度对比两种写法:
执行速度差异
- 4个匹配值的短条件场景下,or链式判断速度略快:or支持短路求值,只要匹配到第一个符合的条件就会直接终止后续判断返回结果;而in+列表的写法首先要创建列表对象,再遍历成员匹配,多了创建列表的固定开销。
举个例子,如果status的值大概率是Failed,or链式只要判断一次就能出结果,比遍历列表快不少。 - 如果匹配值数量超过5个,两者的速度差会快速缩小;要是把in后面的列表换成集合
{'Failed', 'Terminated', 'Aborted', 'Expired'},in的查找速度会反超or链式——集合的成员查找是O(1)复杂度,匹配值越多优势越明显。
综合表现对比
绝大多数开发场景下,in列表成员判断的综合表现更优:
- 可读性更高:代码更简洁,不用重复写
status==,一眼就能看懂是判断status是不是在指定的状态集合里。 - 可维护性更强:后续要新增、删除匹配状态时,直接修改后面的列表内容就行,不容易出现漏写变量、拼写错误之类的问题。
- 性能差距可忽略:普通业务场景下,两种写法的速度差都是微秒级,完全不会影响业务整体性能,可读性和可维护性的收益远大于这点性能差异。
两种写法的代码示例如下:
or链式判断写法:
if status=='Failed' or status=='Terminated' or status=='Aborted' or status=='Expired': break
in列表成员判断写法:
if status in ['Failed', 'Terminated', 'Aborted', 'Expired']: break
小提示:如果匹配的状态值是固定不变的,建议把列表换成元组或者集合,能进一步优化in查找的性能。
内容的提问来源于stack exchange,提问作者YASH JADHAV
相关产品推荐
相关产品推荐

