Levenshteindistance算法

2024-09-28 23:47:22 发布

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

def worddistance(source, target):
    ''' Return the Levenshtein  distance between 2 strings '''  

    if len(source) > len(target):
        source, target = target, source
    #Now target becomes the larger string, if it is 0, surely len(source) is 0?
    if len(target) == 0: 
        return len(source)

  ### Continue on to calculate distance.

如果两个参数都相同,那么返回0不是一样的吗?在

我不太清楚这部分功能要达到什么目的


Tags: thesourcetargetlenreturnifisdef
1条回答
网友
1楼 · 发布于 2024-09-28 23:47:22

是的,如果两者的长度都为0,则代码返回0。您可以在Wikibooks implementation中看到几乎相同的样式;但是这里的编码人员根本没有仔细考虑代码。在

您只需将第二个测试更改为:

if not target:
    return 0

不改变意思。在

Wikibooks实现测试了,但是:

^{pr2}$

这就更有道理了。在

函数在那行之后会做更多的工作;它只是一个边界检查。检查结束后,该算法的工作效率仍然会下降;Wikibooks版本将生成一系列从[1][len(target)]的一系列1元素列表,然后返回最后一个元素;所以len(target)。在

相关问题 更多 >