如何组合Python列表元素生成长度为2的原列表长度次幂的新列表?
目标功能的标准技术术语与实现方案
你需要实现的功能对应的标准技术术语是幂集(Power Set),指给定集合的所有子集(包含空集、集合本身)构成的集合,这类集合的元素总数恰好为2^n(n为原集合的元素个数),和你提到的列表长度计算规则完全吻合。
具体实现方法
不需要手动编写嵌套逻辑判断原列表元素是否被选入子集,借助Python标准库即可快速完成需求:
- 导入标准库
itertools中的combinations方法,该方法可以直接生成指定长度的无重复元素组合 - 依次遍历从长度0(对应空集)到原列表长度的所有组合
- 对生成的组合做格式适配:空集输出为题目要求的
'∅',其余组合用逗号拼接成字符串,最后组装成目标新列表 - 可直接运行的参考代码:
from itertools import combinations x = ['a', 'b', 'c'] y = [] for subset_size in range(len(x) + 1): for subset in combinations(x, subset_size): if subset_size == 0: y.append('∅') else: y.append(','.join(subset))
- 上述代码执行后,生成的
y完全匹配预期结果:['∅', 'a', 'b', 'c', 'a,b', 'a,c', 'b,c', 'a,b,c'],长度恰好为2 ** len(x) = 8。
内容的提问来源于stack exchange,提问作者Price Nimmich
相关产品推荐
相关产品推荐

