首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >get_matching_blocks()是如何工作的?

get_matching_blocks()是如何工作的?
EN

Stack Overflow用户
提问于 2017-09-29 21:52:15
回答 2查看 290关注 0票数 0

有人能解释一下get_matching_blocks()的行为吗?对于下面的示例:

代码语言:javascript
复制
string2 = "1234 abc efg"
string1 = "efg abc 1234"
match = SequenceMatcher(None, string1, string2).get_matching_blocks()
print(match)

它返回下面的结果[Match(a=3, b=4, size=5), Match(a=12, b=12, size=0)],这意味着它只找到子序列“abc”

为什么它不返回子序列"1234“和"efg"?

EN

回答 2

Stack Overflow用户

发布于 2017-09-29 21:57:35

According to the documenatation

返回描述匹配子序列的三元组列表。每一个三元组的形式都是(i,j,n),表示ai:i+n == bj:j+n,三元组在i和j中单调递增。

这里的关键词是“单调递增”。这意味着如果返回的列表包含三元组t = (i, j, n)t' = (i', j', n'),其中t出现在t'之前,那么我们必须有i <= j <= i' <= j'

票数 1
EN

Stack Overflow用户

发布于 2017-09-29 21:58:34

文档上说:“三元组在i和j中单调递增。”因此,在找到匹配项后,实现永远不会回头看。它会找到"abc“,并且只在其中的每个字符串中进行查找。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46490282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档