编写一个函数,return list里的每一个元素组合

编写一个递归函数all_subsets,该函数将项目列表作为参数,并返回包含所有子集的列表(即包含原始列表中某些项目的所有列表)。我们将这些子集视为数学集,因此顺序无关紧要。对于这个函数,您可能需要使用循环和递归。

all_subsets([100])
[[], [100]]
all_subsets([])
[[]]
all_subsets(['a', 'b', 'c'])
[[], ['c'], ['b'], ['b', 'c'], ['a'], ['a', 'c'], ['a', 'b'], ['a', 'b', 'c']]


def all_subsets(L):
    z = L.copy()
    l = z.pop()
    if len(L)==1:
        return [[],[L[0]]]
    else:
        r = all_subsets(z)
        r = r + [n+[l] for n in r]
        return r

print(all_subsets([1,2,5,1]))


用递归就可以完成,如有帮助,还望采纳