gpt4 book ai didi

Python:在枚举中查找字符串的最快方法

转载 作者:太空狗 更新时间:2023-10-30 01:51:54 26 4
gpt4 key购买 nike

解析了 IANA子标签(参见 Cascaded string split, pythonic way )并列出了 8600 个标签:

tags= ['aa',
'ab',
'ae',
'af',
'ak',
'am',
'an',
'ar',
# ...

我想检查例如 mytag="ro" 是否在列表中:最快的方法是什么:

第一种解决方案:

if mytag in tags:
print "found"

第二种方案:

if mytag in Set(tags):
print "found"

第三种解决方案:将列表转换为大字符串,如:'|aa|ab|ae|af|ak|am|an|ar|...' 然后查看字符串是否在另一个字符串中:

tags = '|aa|ab|ae|af|ak|am|an|ar|...'
if mytag in tags:
print "found"

还有别的办法吗?哪个最快,是否已经测量过,如果不是,我该如何对自己进行基准测试(我应该从列表中随机选择一个元素,还是应该选择最后一个然后测试它,有人可以为“计时器”提供 python 代码)吗?

最佳答案

由于我无法访问原始字符串,因此任何测试都会有偏差。但是,您要了一个计时器?检查timeit模块,旨在为一些代码片段计时。

请注意,如果您使用 IPython%timeit 是一个神奇的函数,可以轻而易举地为函数的执行计时,如下所示。

一些评论

  • 您应该将 Set 替换为 set...
  • 在运行任何测试之前构造您的集合和长字符串
  • 从您的 tags 列表中随机取一个元素确实是可行的方法。

作为在 IPython 中使用 %timeit 的例子:

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

关于Python:在枚举中查找字符串的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com