我在尝试python的difflib模块时遇到了SequenceMatcher
。所以,我尝试了下面的例子,但不明白发生了什么。
>>> SequenceMatcher(None,"abc","a").ratio()
0.5
>>> SequenceMatcher(None,"aabc","a").ratio()
0.4
>>> SequenceMatcher(None,"aabc","aa").ratio()
0.6666666666666666
现在,根据ratio:
Return a measure of the sequences' similarity as a float in the range [0, 1]. Where
T
is the total number of elements in both sequences, andM
is the number of matches, this is2.0*M / T
.
所以,对我来说:
T=4
和M=1
so比率2*1/4 = 0.5
T=5
和M=2
so比率2*2/5 = 0.8
T=6
和M=1
so比率2*1/6.0 = 0.33
根据我的理解,T = len(aabc) + len(a)
和M=2
因为a
在aabc
中出现两次。
那么,我错在哪里?我错过了什么。?
Here是SequenceMatcher.ratio()
的源代码
你第一个案子是对的。在第二种情况下,只有来自
aabc
的一个a
匹配,所以M=1。在第三个示例中,这两个a
s匹配,因此M=2。[p.S.:您指的是古老的Python2.4源代码。当前源代码位于hg.python.org。]
相关问题 更多 >
编程相关推荐