如何获取一个集合的所有子集?(幂集)

202

给定一个集合

{0, 1, 2, 3}

如何生成子集:

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

3
对于基于约束的因果发现算法,需要通过对所有涉及变量的可能子集进行条件独立性检验。我还遇到了在计算布尔函数的傅里叶级数时需要使用幂集。这显然只是冰山一角。 - Nazaal
2
@X10D 询问幂集的应用就像询问子集的应用一样,这是一个基本的数学概念。如何使用它取决于您。我曾尝试过使用它来尝试各种事物的组合。假设您的集合包含动作,您想测试所有可能的动作子集。那么迭代幂集就会感觉很自然。 - DustByte
32个回答

0

#希望这对你有用

ab=['a','b', 'c']

for i in range(2**len(ab)):
    for j in range(len(ab)):
        if '1' in bin(i)[-1:-4:-1][j]:
            print(ab[j], end=" ")
    print()

-2
def powerset(some_set):
    res = [(a,b) for a in some_set for b in some_set]
    return res

6
虽然此代码可能回答了问题,但提供有关为什么和/或如何回答问题的其他上下文可以提高其长期价值。请考虑阅读如何回答,并编辑答案以改进它。 - blurfus
3
在回答一个十年前有28个其他答案的问题时,使用@blurfus总是一个好习惯,但这尤其重要。为什么这比被接受的答案更好?这个答案提供了哪些其他答案没有的贡献? - Jeremy Caney
2
此外,这段代码不会返回一个集合的幂集,而只会返回一个基数大小为2的元组集合。 - curiouscupcake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接