专否 写文章

jerkzhang,stay hungry, stay foolish

Mar 1, 2020
Follow

Python判断字符串是否存在某子串的速度比较

Python有两种方法判断一个字符串中是否存在某子串。

方法1:子串 in 字符串

>>> if "abc" in "123abc":
...   print 'yes'
yes

方法2:字符串.find(子串) > -1

>>> if "123abc".find( "abc" ) > -1:
...   print 'yes'
yes


以上两种方法都很常用,而方法1和方法2谁的速度更快,更推荐哪一种写法呢?
结论:推荐方法1,不仅速度翻倍,而且表达性更强。




python判断字符串是否含有某子串的两种方法的速度对比记录:

>>> import time
>>> def a():
...   t1 = time.time()
...   for i in xrange(100000):
...       c = '89' in str(i)
...   t2 = time.time()
...   for i in xrange(100000):
...       c = str(i).find('89') > -1
...   t3 = time.time()
...   print t2-t1, t3-t2
...   print (t2-t1)/100000, (t3-t2)/100000
... 
>>> a()
0.0287640094757 0.0479180812836
2.87640094757e-07 4.79180812836e-07
>>> a()
0.0289330482483 0.0468580722809
2.89330482483e-07 4.68580722809e-07
>>> a()
0.0284249782562 0.051322221756
2.84249782562e-07 5.1322221756e-07

经过对比就可以看出“子串 in 字符串”的写法速度更快,而且表达性更强。

喜欢这个文章 | 分享 | 新建跟帖