我几天前开始学习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
非常感谢
答案 0 :(得分:0)
您也可以使用scipy(pdist),但您必须将输入更改为2D数组。它将汉明距离作为分数返回。为此,您需要带数字的字符串(二进制字符串可以):
^