Edu*_*scu 4 python string search enumeration python-2.7
解析了IANA子标签(参见级联字符串拆分,pythonic方式)并列出了8600个标签:
tags= ['aa',
'ab',
'ae',
'af',
'ak',
'am',
'an',
'ar',
# ...
Run Code Online (Sandbox Code Playgroud)
我想检查一下mytag="ro"
列表中是否有:最快的方法是:
第一解决方案
if mytag in tags:
print "found"
Run Code Online (Sandbox Code Playgroud)
二解决方案:
if mytag in Set(tags):
print "found"
Run Code Online (Sandbox Code Playgroud)
第三种解决方案:将列表转换为大字符串,如:'|aa|ab|ae|af|ak|am|an|ar|...'
然后查看字符串是否在另一个字符串中:
tags = '|aa|ab|ae|af|ak|am|an|ar|...'
if mytag in tags:
print "found"
Run Code Online (Sandbox Code Playgroud)
还有另外一种方法吗?哪个是最快的,这是否已经测量过,如果不是我怎么能自我测量(我从列表中取一个随机元素,或者我应该拿最后一个然后测试它,有人可以为'天文台'提供python代码)吗?
由于我无法访问原始字符串,因此任何测试都会有偏差.但是,你问了一个天文台?检查timeit
模块,旨在计算一些代码片段.
请注意,如果您使用IPython
,%timeit
则是一个神奇的函数,可以轻松地执行函数,如下所示.
一些评论
Set
为set
......set
在运行任何测试之前构造你的长字符串tags
列表中取一个随机元素是真正的方法.作为%timeit
在IPython 中使用的一个例子:
tags = ['aa','ab','ae','af','ak','an','ar']
tags_set = set(tags)
tags_str = "|".join(tags)
%timeit 'ro' in tags
1000000 loops, best of 3: 223 ns per loop
%timeit 'ro' in tags_set
1000000 loops, best of 3: 73.5 ns per loop
%timeit 'ro' in tags_str
1000000 loops, best of 3: 98.1 ns per loop
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1572 次 |
最近记录: |