【发布时间】:2014-07-31 12:08:43
【问题描述】:
我有一个短字符串文件,我已将其加载到列表 short 中(有 150 万个长度为 150 的短字符串)。我想找到在代码中为seq 的较长字符串(长度约为 500 万)中存在的这些短字符串的数量。我使用以下明显的实现。但是,这似乎需要很长时间(大约一天)才能运行。
count1=count2=0
for line in short:
count1+=1
if line in seq:
count2+=1
print str(count2) + ' of ' + str(count1) + ' strings are in long string.'
有什么方法可以更有效地做到这一点?
【问题讨论】:
-
只是一些头脑风暴:您可以建立一个短字符串的 trie,并在匹配
seq时使用它。如果你的许多小字符串都有共同的前缀,这可能会大大减少检查的次数。 -
你能显示加载文件的代码吗?这也可能是您的问题的一部分。
-
@RedX:唯一的问题是纯 python trie 可能因为解释器开销而非常慢。
-
我正在考虑构建尝试。但是@nneonneo 的方法效果很好。
标签: python string performance find