<p>我认为你在那里创建了很多列表,这可能会让人很困惑</p>
<p>如果您想使用纯逻辑方法</em>,而不使用为<strong>序列匹配设计的库,例如<strong><code>difflib</code></strong>,您可以首先定义一个比较两个字符串的函数;然后你把你的句子分成一个单词列表,并通过这个列表进行双重迭代(嵌套),比较所有可能的单词对</p>
<p>如果字符串匹配,它们将打印在同一行上,以逗号分隔,否则打印在新行上</p>
<p>在以下函数中,我还为要匹配的子字符串的长度添加了一个参数,默认情况下设置为3以与您的问题保持一致:</p>
<pre><code># This function compairs two strings and returns them in a tuple if they contain the
# same substring of len_substring characters.
def string_matcher(string_a, string_b, len_substring = 3):
for i in range(len(string_a)-len_substring):
if string_a[i:i+len_substring] in string_b:
return string_a, string_b
return None
string = "the games are lame"
words = string.split()
output = ""
# Making a double iteration over the words list and calling string_matcher for each pair.
for i in range(len(words)-1):
output = output+words[i]
for j in range(i+1, len(words)):
try:
word_a, word_b = string_matcher(words[i], words[j])
output = output+", "+word_b
except TypeError:
pass
output = output+"\n"
print(output)
</code></pre>
<p>程序将打印出:</p>
<pre><code>the
games, lame
are
</code></pre>