我正在尝试找出如何在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]
时子集的位置。例如binary 01=在原始集合[1,2]
的位置1处获取索引,该集合将是[2]
。你知道吗
二进制11表示从原始集合[1,2]
中获取索引位置0和1,该集合给出了[1,2]
的答案,以此类推
我怎么能写这个,我的代码是如此混乱,有没有一个简单的方法来映射这个?你知道吗
可以使用遍历所有二进制组合的循环和测试计数器每一位的嵌套循环来决定是否将相应索引的list元素添加到输出列表:
或与列表理解:
以便:
将返回:
以及:
将返回:
相关问题 更多 >
编程相关推荐