[1,2,3] 我有此列表,并希望使用递归打印此列表的所有子集。我使用以下代码获取输出,但是有什么更好/更简便的方法?无需将其强制转换为集合。
def recur_subset(arr):
if len(arr)==0:
print(arr)
else:
for i in range(0, len(arr)):
print(arr[0:i+1])
for j in range(2, len(arr)):
print([arr[0], arr[j]])
return recur_subset(arr[1:len(arr)])
答案 0 :(得分:0)
您可以使用itertools
来完成繁重的工作:
import itertools
def recur_subset( s, l=None ):
if l == None:
l = len(s)
if l > 0:
for x in itertools.combinations( s, l ):
print(list(x))
recur_subset( s, l-1 )
注意:这仅打印非空子集;仅打印非空子集。在末尾添加else: print([])
,以包含空子集。