Python中两个字符串之间的汉明距离

我是 Python 新手,我需要找到两个字符串之间的汉明距离:


chaine1 = 6fb17381822a6ca9b02153d031d5d3da


chaine2 = a242eace2c57f7a16e8e872ed2f2287d

XOR 功能不行,我在网上搜索也不是很成功。


我试图修改我在网上找到的东西,但有一些无效的语法......:


assert len (chaine1) == len(chaine2)


return sum(chaine1 != chaine2 for chaine1, chaine2 in zip(chaine1, chaine2))



if __name__=="__main__":    

chaine1 = hashlib.md5("chaine1".encode()).hexdigest()


chaine2 = hashlib.md5("chaine2".encode()).hexdigest()

print hamming_distance(chaine1, chaine2)

关于我如何进行的任何想法?谢谢!


慕村225694
浏览 520回答 2
2回答

侃侃尔雅

以下是使用两种不同方式计算汉明距离的程序。import hashlibdef hamming_distance(chaine1, chaine2):    return sum(c1 != c2 for c1, c2 in zip(chaine1, chaine2))def hamming_distance2(chaine1, chaine2):    return len(list(filter(lambda x : ord(x[0])^ord(x[1]), zip(chaine1, chaine2))))if __name__=="__main__":        chaine1 = hashlib.md5("chaine1".encode()).hexdigest()    chaine2 = hashlib.md5("chaine2".encode()).hexdigest()    #chaine1 = "6fb17381822a6ca9b02153d031d5d3da"    #chaine2 = "a242eace2c57f7a16e8e872ed2f2287d"    assert len(chaine1) == len(chaine2)    print(hamming_distance(chaine1, chaine2))    print(hamming_distance2(chaine1, chaine2))你得到的原因Invalid syntax: ...可能是你没有任何缩进,这在 Python 中是必需的。

回首忆惘然

首先应该定义两个字符串之间的汉明距离。两根相等长度的弦之间的汉明距离是这些弦变化的位置数。用更专业的术语来说,它是衡量将一根弦变成另一根所需的最少更改次数的指标。让我们来解决它。def hamming(s1,s2):result=0if len(s1)!=len(s2):    print("String are not equal")else:    for x,(i,j) in enumerate(zip(s1,s2)):        if i!=j:            print(f'char not math{i,j}in {x}')            result+=1return results1="rover"s2="river"print(hamming(s1,s2))结果:char not match ('o', 'i') in 1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python