我有序列L的列表(序列的1000多家公司)l = [ABCD,AABA,...]
.我还有一个f
包含许多4个字母序列的文件(大约一百万个).我想l
为每个序列选择最接近的字符串,f
最多为汉明距离2,并更新计数器good_count
.我为此编写了以下代码,但速度非常慢.我想知道它是否可以更快地完成.
def hamming(s1, s2): if len(s1) != len(s2): raise ValueError("Undefined for sequences of unequal length") return sum(ch1 != ch2 for ch1, ch2 in zip(s1, s2)) f = open("input.txt","r") l = [ABCD,AABA,...] good_count = 0 for s in f: x = f.readline() dist_array = [] for ll in l: dist = hamming(x,ll) dist_array.append(dist) min_dist = min(dist_array) if min_dist <= 2: good_count += 1 print good_count
它的工作原理快,如果l
和f
虽小,但花费大量时间过长l
和f
.请建议更快的解决方案.