我想要recursively
获取句子中单词的排列,将相邻单词从左到右分成两个一组。
举个例子,如果我考虑 a, B, c, D
是 4 个单词,主句有 5 次出现这 4 个单词,如下所示:
主句:a + B + c + a + D
我会得到四个句子
c + a + B + c + a
a + B + c + a + D
a + B + c + a + B
B + c + a + B + c
它们都与主句的长度相同,并且应该注意的是主句中的最后一个单词,即 D
仅出现一次且仅出现在 a
之后的句子末尾因为在主句中没有任何单词跟随。
最佳答案
您可以使用以下递归生成器函数:
def adjacent_combinations(sentence, target=None, length=0):
if not target:
for target in set(sentence):
for combination in adjacent_combinations(sentence, target, 1):
yield combination
elif length == len(sentence):
yield [target]
else:
for a, b in set(zip(sentence, sentence[1:])):
if a == target:
for combination in adjacent_combinations(sentence, b, length + 1):
yield [a] + combination
这样:
list(adjacent_combinations(['a', 'B', 'c', 'a', 'D']))
将返回:
[['B', 'c', 'a', 'B', 'c'],
['c', 'a', 'B', 'c', 'a'],
['a', 'B', 'c', 'a', 'B'],
['a', 'B', 'c', 'a', 'D']]
关于python - 句子中单词的递归排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52574197/