眼眸繁星
使用 itertools recipes 的实现:from itertools import chain, combinationsdef powerset(iterable):
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))print(*powerset([1,2,3]))输出:() (1,) (2,) (3,) (1, 2) (1, 3) (2, 3) (1, 2, 3)它生成元组 - 但您可以根据需要转换它们。它看起来也比你的解决方案短得多...
梵蒂冈之花
可能,Stackoverflow不是共享Gist片段的最佳选择,但存在相关问题,我决定在这里分享我的片段,并相信它可能对那些正在寻找Power Set算法实现和Stackoverflow社区本身的人有用。https://gist.github.com/vladignatyev/e76b5fd1c3cdfff7034ce17506fae36e我的实现可能难以理解。请与我自由分享您与此开源软件相关的问题,改进和建议!Usage:
>>> ps = power_set([1,2,3])
>>> for ss in ps: print(ss)
Output:
[],
[1],
[2],
[3],
[1, 2],
[1, 3],
[2, 3],
[1, 2, 3]供您参考,我将代码移植到纯 Swift 5,不需要依赖项。退房-->https://gist.github.com/vladignatyev/7e9399930cb614d6251a4f82b8e75ff1