Python中未知层数嵌套列表如何高效生成全元素组合
解决方案
直接使用Python标准库提供的itertools.product即可实现需求,该函数原生支持生成任意数量可迭代对象的笛卡尔积,不需要提前知道嵌套子列表的数量。
实现代码
import itertools lst = [[0, 1, 2], [3], [4, 5]] # 对嵌套列表解包后传入product,返回结果为元组迭代器,按需转为列表即可 result = [list(item) for item in itertools.product(*lst)] print(result) # 输出:[[0, 3, 4], [0, 3, 5], [1, 3, 4], [1, 3, 5], [2, 3, 4], [2, 3, 5]]
补充说明
- 无需手动处理递归/多层循环逻辑,代码简洁易维护
- 基于标准库C扩展实现,运行效率远高于手写Python逻辑
- 支持惰性迭代:如果组合数量极大不需要一次性生成所有结果,可以直接遍历
itertools.product(*lst)迭代器,避免占用过多内存
内容的提问来源于stack exchange,提问作者Nick Keener
相关产品推荐
相关产品推荐

