【发布时间】:2019-03-10 12:00:08
【问题描述】:
我想弄清楚如何在 Python 中做到这一点:
打印出任何给定集合的所有子集。
例如:[1,2]
所以答案是手动的:
[]
[2]
[1]
[1,2]
我意识到解决方案的总数将是2(exp)n,其中n 是列表中元素的数量。
例如,如果列表是[1,3,4],那么子集的总数就是2(exp)3 = 8。
我也意识到,如果我得到上面列表的二进制位表示,就会出现以下内容:
例如:[1,2]
00 : []
01 : [2]
10 : [1]
11 : [1,2]
包含1 的位的每个位置,即子集在将其索引到原始集[1,2] 时的位置。例如二进制 01 = 在原始集合 [1,2] 的位置 1 处获取索引,这将是 [2]。
二进制 11,表示从原始集合 [1,2] 中获取索引位置 0 和 1,其答案为 [1,2],等等。
我该如何编码,我的代码太乱了,有没有简单的方法来映射这个?
【问题讨论】:
-
欢迎来到 Stack Overflow!请参观并通读帮助中心,特别是如何提问。你最好的选择是做你的研究,搜索关于 SO 的相关主题,然后试一试。在进行更多研究和搜索后,发布一个最小、完整和可验证的尝试示例,并具体说明您遇到的问题,这可以帮助您获得更好的答案!
-
也许这可能会有所帮助:stackoverflow.com/questions/374626/…
-
看看itertools recipes:
def powerset(iterable):- 它把你所有的集合创建为元组。也许你可以从那里工作