How to get all subsets of a set? (powerset)

前端 未结 28 2944
庸人自扰
庸人自扰 2020-11-22 05:18

Given a set

{0, 1, 2, 3}

How can I produce the subsets:

[set(),
 {0},
 {1},
 {2},
 {3},
 {0, 1},
 {0, 2},
 {0, 3},
 {1, 2}         


        
28条回答
  •  野的像风
    2020-11-22 05:48

    You can do it like this:

    def powerset(x):
        m=[]
        if not x:
            m.append(x)
        else:
            A = x[0]
            B = x[1:]
            for z in powerset(B):
                m.append(z)
                r = [A] + z
                m.append(r)
        return m
    
    print(powerset([1, 2, 3, 4]))
    

    Output:

    [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3], [4], [1, 4], [2, 4], [1, 2, 4], [3, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]]
    

提交回复
热议问题