编写一个递归函数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]))
用递归就可以完成,如有帮助,还望采纳