2

我正在计算一些字符串的 levenshtein 距离。我只想进一步分析距离为 1 的那个。最重要的是,我感兴趣的是产生距离的角色的位置。例如,例如;

('rodange', 'redange', 1)  # position 2

我可以想出几种到达那里的方法,但它们似乎不是很方便(比如循环遍历所有字符并逐个比较它们)。已经有东西了?

4

1 回答 1

1

我认为没有比您已经想出的更好的解决方案了。添加代码以返回您正在使用的 levenshtein 算法的第一次更改的索引。那应该是正确位置的一行,以及修改后的 return 语句。

或者像你说的那样循环,也不是太难:

idx = next(i for (i, (a, b)) in enumerate(zip(w1, w2)) if a != b)

如果你喜欢它更短:

from operator import eq
idx = map(eq, w1, w2).index(False)
于 2013-08-01T14:00:07.077 回答