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

2024-05-08 13:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

chaine1 = 6fb17381822a6ca9b02153d031d5d3da

chaine2 = a242eace2c57f7a16e8e872ed2f2287d

异或功能不起作用,我在网上的搜索也不是很成功。

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

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)

对我该怎么做有什么想法吗?谢谢!


Tags: 字符串功能距离len语法assertmd5encode
1条回答
网友
1楼 · 发布于 2024-05-08 13:23:27

下面是用两种不同方法计算汉明距离的程序。

import hashlib

def 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所必需的。

相关问题 更多 >