寻找一种简单的方法来获得所有组合 输入:字符串列表
list = ["a", "b", "c", "d"]
输出:字符串的嵌套列表
[["abcd"],["abc", "d"],["ab","cd"],["a","bcd"],["ab","c","d"],["a","bc","d"],["a","b","cd"],["a","b","c","d"]]
答案 0 :(得分:2)
您可以将递归与生成器一起使用:
def combo(d):
yield d
if len(d) > 1:
for i in range(len(d)-1):
yield from combo([*d[:i], d[i]+d[i+1], *d[i+2:]])
print(list(set(map(tuple, combo(["a", "b", "c", "d"])))))
输出:
[('a', 'b', 'c', 'd'), ('abcd',), ('ab', 'c', 'd'), ('abc', 'd'), ('a', 'b', 'cd'), ('ab', 'cd'), ('a', 'bcd'), ('a', 'bc', 'd')]