以下评估由 和
链接的两个(或多个)条件的方法之间是否存在差异(在性能方面,而不是可读性方面)?
a == 1 and b == 2
或
(a,b) == (1,2)
或
相同:
a == 1 or b == 1
或
1 in (a,b)
哪种方式更可取?一种使用 bool 运算符还是另一种使用元组?
最佳答案
这些是使用 python 2.7
In [29]: a = 1
In [30]: b = 2
In [31]: timeit a == 1 and b == 2
10000000 loops, best of 3: 82.2 ns per loop
In [32]: timeit (a,b) == (1,2)
10000000 loops, best of 3: 132 ns per loop
In [33]: timeit 1 in (a,b)
10000000 loops, best of 3: 118 ns per loop
当结果为 False 时:
In [37]: timeit a == 2 and b == 2
10000000 loops, best of 3: 52.2 ns per loop
In [38]: timeit 3 in (a,b)
10000000 loops, best of 3: 151 ns per loop
In [39]: timeit (a,b) == (2,2)
10000000 loops, best of 3: 144 ns per loop
a == 2 and b == 2
更快,因为 and
是 short circuit operator
根据 wim 的评论,使用集合比检查元组的成员更快:
In [55]: timeit 3 in {a,b}
10000000 loops, best of 3: 92.9 ns per loop
关于python - 使用元组而不是 bool 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25486268/