列表中项目的所有组合。全部包含所有物品

时间:2019-10-16 13:50:53

标签: python list combinations

寻找一种简单的方法来获得所有组合 输入:字符串列表

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"]]

1 个答案:

答案 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')]