如何使用itertools.product计算长度动态变化的嵌套列表的笛卡尔积
完全可以实现,你只需要借助Python的序列解包操作符*,把嵌套列表直接拆成itertools.product的入参即可,无论后续追加多少个子列表都能自动适配,不需要修改调用逻辑。
代码示例
import itertools # 初始嵌套列表 nested_list = [ ["A", "B"], ["C", "D", "E"] ] # 用*解包嵌套列表后传入product result = list(itertools.product(*nested_list)) print(len(result)) # 输出 6,符合预期
当你动态追加子列表后,调用逻辑完全不用改:
# 新增子列表 nested_list.append(["F", "G"]) # 仍然用同样的方式调用 new_result = list(itertools.product(*nested_list)) print(len(new_result)) # 输出 12,对应 2*3*2 的组合总数
原理解释
*操作符会把可迭代对象拆成独立的位置参数传给函数,上面的写法等价于你手动写itertools.product(["A", "B"], ["C", "D", "E"], ["F", "G"]),嵌套列表有多少个子列表就会自动拆成多少个入参,完美适配动态变更的场景。
内容的提问来源于stack exchange,提问作者XtinaS
相关产品推荐
相关产品推荐

