两个字符串之间的汉明距离 Python
Hamming Distance Between Two Strings In Python
我是 Python 的新手,我需要找到两个字符串之间的汉明距离:
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)
关于我如何继续的任何想法?谢谢!
以下是使用两种不同方法计算汉明距离的程序。
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 中是必需的。
首先应该定义两个字符串之间的海明距离。
The hamming distance between two strings of equal length is the number of positions at which these strings vary. In more technical terms, it is a measure of the minimum number of changes required to turn one string into another.
让我们来解决它。
def hamming(s1,s2):
result=0
if 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+=1
return result
s1="rover"
s2="river"
print(hamming(s1,s2))
Result: char not match ('o', 'i') in 1
我是 Python 的新手,我需要找到两个字符串之间的汉明距离:
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)
关于我如何继续的任何想法?谢谢!
以下是使用两种不同方法计算汉明距离的程序。
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 中是必需的。
首先应该定义两个字符串之间的海明距离。
The hamming distance between two strings of equal length is the number of positions at which these strings vary. In more technical terms, it is a measure of the minimum number of changes required to turn one string into another.
让我们来解决它。
def hamming(s1,s2):
result=0
if 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+=1
return result
s1="rover"
s2="river"
print(hamming(s1,s2))
Result: char not match ('o', 'i') in 1