Как сделать именно эту последовательность строк? - PullRequest
0 голосов
/ 13 июля 2020

Мне было интересно выполнить определенную последовательность строк. Я пробовал использовать permutations и combinations из itertools, но не понял, как это сделать. Такие последовательности всегда занимают следующее слово. Это сложно объяснить, но легче понять, посмотрев на пример вывода

ОЖИДАНИЕ ВЫХОДА

Original string: 
“people are good good people are great great people are awesome people are good good people are awesome”

Sequence of Words to Check: 
1 word sequence:
“people”, “are”, “good”, “great”, “awesome”.

2 word sequence:
“people are”, “are good, “good good”, “good people”, “are great”, “great great”, “great people” ...

3 word sequence:
“people are good”, “are good good”, “good good people”, “good people are” ...

4 word sequence ... until 20 word sequence.

Код, который я сделал, прост и получается правильно первое слово secuence, но не остальное.

def sequences(lst):   
    for count_seq in range(1, 21):
        if count_seq == 1:
            for i in dict.fromkeys(permutations(iterable=lst, r=count_seq)):
                x = ' '.join(list(i))
                print(x)
        else:
            for i in dict.fromkeys(permutations(iterable=lst, r=count_seq)):
                x = ' '.join(list(i))
                print(x)

lst = string.split(' ')
sequences(lst=lst)

1 Ответ

1 голос
/ 13 июля 2020

Попробуйте следующее:

x = "people are good good people are great great people are awesome people are good good people are awesome"

words = x.split()
two_gram = [' '.join(words[i:i+2]) for i in range(len(words))] 
print(two_gram)

three_gram = [' '.join(words[i:i+3]) for i in range(len(words))]
print(three_gram)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...