Skip to main content
 首页 » 编程设计

python之如何比较 python 2 和 3 中的字符串

2025年05月04日23hnrainll

我在玩一些 python 并想出了这段代码:

import time 
N = 10000000 
t1 = time.time() 
for _ in range(N): 
    if 'lol' in ['lol']: 
        pass 
print(time.time() - t1) 
 
t1 = time.time() 
for _ in range(N): 
    if 'lol' == 'lol': 
        pass 
print(time.time() - t1) 

所以,如果我使用 python2:

(test) C:\Users\test>python test.py 
0.530999898911 
0.5 
 
(test) C:\Users\test>python test.py 
0.531000137329 
0.5 
 
(test) C:\Users\test>python test.py 
0.528000116348 
0.501000165939 

这很好 - 我喜欢第二个变体更快,我应该使用 'lol' == 'lol' 因为它是比较两个字符串的更 pythonic 方式。 但是如果我使用 python3 会发生什么:

(test) C:\Users\test>python3 test.py 
0.37500524520874023 
0.3880295753479004 
 
(test) C:\Users\test>python3 test.py 
0.3690001964569092 
0.3780345916748047 
 
(test) C:\User\test>python3 test.py 
0.37799692153930664 
0.38797974586486816 

使用时间:

(test) C:\Users\test>python3 -m timeit "'lol' in ['lol']" 
100000000 loops, best of 3: 0.0183 usec per loop 
 
(test) C:\Users\test>python3 -m timeit "'lol' == 'lol'" 
100000000 loops, best of 3: 0.019 usec per loop 

天呐!为什么第一个变体更快?那么,当我使用 python3 时,我应该使用像 'lol' in ['lol'] 这样丑陋的风格吗?

请您参考如下方法:

你的大部分 python2 时间是通过调用 range 来构建一个巨大的列表。在 Python 2 中将其更改为 xrange,或使用 timeit正确编写的模块。完成此操作后,您将不会发现明显的差异会激发您编写外观奇怪的代码。