1

另一位用户已经开始讨论如何在 Python 中查找重复的短语,但只关注三个单词的短语。

Robert Rossney 的答案是完整且有效的(这里是Python 文本中的重复短语),但是我可以要求一种简单地找到重复短语的方法,尽管它们很长?我认为可以详细说明之前讨论中已经阐述的方法,但我不太确定如何去做。

我认为这是可以修改以返回不同长度的元组的函数:

def phrases(words):
    phrase = []
    for word in words:
        phrase.append(word)
        if len(phrase) > 3:
            phrase.remove(phrase[0])
        if len(phrase) == 3:
            yield tuple(phrase)
4

1 回答 1

1

一种简单的修改是将字长传递给phrases方法,然后以不同的字长调用该方法。

def phrases(words, wlen):
  phrase = []
  for word in words:
    phrase.append(word)
    if len(phrase) > wlen:
        phrase.remove(phrase[0])
    if len(phrase) == wlen:
        yield tuple(phrase)

然后定义all_phrases

def all_phrases(words):
   for l in range(1, len(words)):
      yield phrases(words, l)

然后使用它的一种方法是

for w in all_phrases(words):
   for g in w:
     print g

对于words = ['oer', 'the', 'bright', 'blue', 'sea'],它产生:

('oer',)
('the',)
('bright',)
('blue',)
('sea',)
('oer', 'the')
('the', 'bright')
('bright', 'blue')
('blue', 'sea')
('oer', 'the', 'bright')
('the', 'bright', 'blue')
('bright', 'blue', 'sea')
('oer', 'the', 'bright', 'blue')
('the', 'bright', 'blue', 'sea')
于 2014-03-11T13:44:16.120 回答