python - 在不使用预定义库的情况下生成集合的幂集?
问题描述
我正在尝试生成列表的幂集,而不使用任何库。例如,鉴于set {1, 2, 3},
它应该返回{{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
注意:我们也可以使用 list 。
我已经实现了代码,但它不是动态的,它是针对特定长度的。我怎样才能使它动态。
代码:
my_list = [0, 1, 2, 3]
first_list = []
second_list = [[]]
final_list = []
for iterate in my_list:
second_list.append([iterate])
for outer_loop in my_list:
for inner_loop in my_list:
if outer_loop!=inner_loop:
first_list.append([outer_loop, inner_loop])
result = (second_list + first_list)
for iterated in result:
if sorted(iterated) not in final_list:
final_list.append(iterated)
final_list + [my_list]
解决方案
尝试这个:
def get_powerset(s):
x = len(s)
subsets = []
for i in range(1 << x):
subsets.append([s[j] for j in range(x) if (i & (1 << j))])
return subsets
lists = [[1, 2, 3], [0, 1, 2, 3]]
for num_list in lists:
print(get_powerset(num_list))
输出:
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
[[], [0], [1], [0, 1], [2], [0, 2], [1, 2], [0, 1, 2], [3], [0, 3], [1, 3], [0, 1, 3], [2, 3], [0, 2, 3], [1, 2, 3], [0, 1, 2, 3]]
推荐阅读
- c - 用于查找最大可除数的 c 程序不起作用
- java - 架构的 Java 进程构建器问题
- sql - SQL 中针对 MIN、MAX 和 AVG 的分析查询
- java - 用于限制对 Java 中方法的访问的设计模式
- java - “未能执行目标 org.apache.maven.plugins:maven-jar-plugin:2.4:jar (default-jar)”为什么?
- javascript - 链接有eventListener,我点击它激活的孩子,但我没有得到href
- python - 使用python读取github私有原始文件,返回源代码不执行代码
- javascript - 使用键值对数组作为数据更新表
- arrays - 在 C 中使用类似函数的宏来访问矩阵元素是否安全?
- php - 有人能帮我从 Google Ads API 调试“以前加载的原型描述符”吗