不使用预定义库如何动态生成任意集合的幂集?
幂集动态实现方案
核心思路
利用迭代递推逻辑实现任意长度输入的幂集生成,无需固定层数的嵌套循环:初始幂集仅包含空集,遍历原集合的每个元素时,将当前已有所有子集都复制一份并加入当前元素,再把这些新子集合并到现有幂集中即可。
可运行实现代码
def generate_power_set(input_list): # 初始化幂集,初始仅包含空集 power_set = [[]] for element in input_list: # 生成所有加入当前元素的新子集 new_subsets = [] for subset in power_set: new_subset = subset.copy() new_subset.append(element) new_subsets.append(new_subset) # 将新子集合并到幂集中 power_set.extend(new_subsets) return power_set # 测试示例 test_list = [1,2,3] print(generate_power_set(test_list)) # 输出:[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
方案说明
- 只要输入列表本身无重复元素(符合集合的特性),生成的幂集天然不存在重复子集,不需要额外做排序去重操作
- 无需引入任何第三方库,纯基础语法实现,可适配任意长度的输入列表
- 原有代码的问题在于手动编写了固定层数的嵌套循环生成对应长度的子集,仅能覆盖特定长度的输入,超过限制后会出现子集遗漏的问题,用上述迭代方案即可解决该问题
内容的提问来源于stack exchange,提问作者Hamza
相关产品推荐
相关产品推荐

