python中这两个语句之间有区别吗:
if tag == ('/event' or '/organization' or '/business'):
Run Code Online (Sandbox Code Playgroud)
和
if tag == '/event' or '/organization' or '/business':
Run Code Online (Sandbox Code Playgroud)
int*_*jay 12
他们都错了.你需要的是:
if tag == '/event' or tag == '/organization' or tag == '/business':
Run Code Online (Sandbox Code Playgroud)
要么:
if tag in ['/event', '/organization', '/business']:
Run Code Online (Sandbox Code Playgroud)
Thi*_*ter 12
适当的解决方案是
if tag in ('/event', '/organization', '/business'):
Run Code Online (Sandbox Code Playgroud)
它不仅使用in完美的操作符,而且还使用元组(不可变),因此python解释器可以比(可变)列表更好地优化它.
基准显示元组比列表更快:
In [1]: import timeit
In [2]: t1 = timeit.Timer('"b" in ("a", "b", "c")')
In [3]: t2 = timeit.Timer('"b" in ["a", "b", "c"]')
In [4]: t1.timeit(number=10000000)
Out[4]: 0.7639172077178955
In [5]: t2.timeit(number=10000000)
Out[5]: 2.240161895751953
Run Code Online (Sandbox Code Playgroud)