最小汉明距离

时间:2017-03-04 19:10:48

标签: performance python-3.x hamming-distance

我几天前开始学习Python 3,所以如果我的代码很差,我会道歉。

我编写了一个脚本来查找列表中的最小Hamming distance个字符串。现在我将使用的字符串是相同长度的二进制字,所以我的第一个问题是在Python中有一个按位解决方案吗?

其次,我的代码是否正确,如果是,那么提高效率的最佳方法是什么?我的搜索没有返回Python 3的答案,这就是我在这里问的原因。

def min_ham_dist(a):
    min_dist = len(a[0]) # Defaults minimum distance to maximum length of string.
    for i in range(len(a)):
        for j in range(i+1, len(a)): # Compares all words after ith word.
            dist = 0
            for k in range(len(a[i])): 
                if a[i][k] != a[j][k]:
                    dist += 1            
            if dist < min_dist:
                min_dist = dist
    return min_dist

非常感谢

1 个答案:

答案 0 :(得分:0)

您也可以使用scipy(pdist),但您必须将输入更改为2D数组。它将汉明距离作为分数返回。为此,您需要带数字的字符串(二进制字符串可以):

^