【发布时间】:2018-04-24 15:44:23
【问题描述】:
我有一个包含 n 个单词的数组,例如:
input: ["just", "a", "test"]
我需要做的是创建由空格分隔的这些单词的所有可能组合以及与原始字符串的组合。例如,上面应该创建:
output: [["just", "a", "test"], ["just a", "test"], ["just a test"], ["just", "a test"]]
我一直在使用 itertools,但无法让它完成我需要的工作。我现在拥有的:
iterable = ['just', 'a', 'test']
for n in chain.from_iterable(combinations(iterable, n) for n in range(len(iterable)+1)):
print(n)
以下几乎可以按要求工作:
iterable = ['just', 'a', 'test']
L = [''.join(reversed(x)).rstrip()
for x in product(*[(c, c+' ') for c in reversed(iterable)])]
print(L)
谢谢。
编辑:
为了阐明这对长度为 4 的数组应该如何工作: 输入:['an', 'even', 'bigger', 'test']`
output:
['an', 'even', 'bigger', 'test']
['an even', 'bigger', 'test']
['an even bigger', 'test']
['an even bigger test']
['an', 'even bigger', 'test']
['an even', 'bigger test']
['an', 'even bigger test']
['an', 'even', 'bigger test']
【问题讨论】:
-
我认为 Sage 库提供了一种从
input计算您需要的非交叉分区集的方法。鉴于该集合intermediate,那么您只需要[map(" ".join, x) for x in intermediate]。
标签: python string combinations whitespace permutation