迭代python中的列表

Ssa*_*ank 5 python

我有序列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
Run Code Online (Sandbox Code Playgroud)

它的工作原理快,如果l和f虽小,但花费大量时间过长l和f.请建议更快的解决方案.

Bou*_*oud 2

使用现有的库,例如 jellyfish:

from jellyfish import hamming_distance
Run Code Online (Sandbox Code Playgroud)

这为您提供了汉明距离的 C 实现。