在我的代码中,我曾经if a == b or a == c or a == d:经常进行比较。在某些时候,我发现这些可以很容易地缩短为if a in {b, c, d}:或者if a in (b, c, d):如果值不可哈希。但是,我从未在其他任何人的代码中看到过这样的结构。这可能是因为:
==方法比较慢。==方法是更Python。in除了我,没有人想过办法。如果有,是哪个原因?
对于简单值(即不是表达式或NaNs),if a == b or a == c和if a in <iterable of b and c>是等价的。
如果值是可散列的,最好使用in集合文字而不是元组或列表文字:
if a in {b, c}: ...
Run Code Online (Sandbox Code Playgroud)
CPython 的窥孔优化器通常能够用缓存frozenset()对象替换它,并且针对集合的成员资格测试是 O(1) 操作。
| 归档时间: |
|
| 查看次数: |
3979 次 |
| 最近记录: |