python打印列表的所有子集

时间:2018-12-16 16:12:34

标签: python python-3.x

[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)])

1 个答案:

答案 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([]),以包含空子集。