You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在双层列表上使用itertools生成所有跨子列表元素组合?

正确实现需求的方法

你用itertools.combinations的思路错了——这个函数是用来从外层列表里选取指定数量的子列表,所以才会返回子列表的组合,完全不是你要的“从每个子列表选一个元素”的效果。

要实现从每个子列表中选一个元素生成所有可能组合,应该用itertools.product,它专门用来计算多个可迭代对象的笛卡尔积,正好匹配你的需求:

import itertools

A = [[1, 5],[2, 6], [3, 7], [4, 8]]
for combo in itertools.product(*A):
    print(combo)

运行这段代码会输出所有16种组合,比如(1,2,3,4)、(1,2,3,8)、(1,2,7,4)等等。如果需要把结果转换成列表格式,可以这样写:

import itertools

A = [[1, 5],[2, 6], [3, 7], [4, 8]]
result = [list(combo) for combo in itertools.product(*A)]
print(result)

这样得到的就是你预期的列表形式的组合集合。

内容的提问来源于stack exchange,提问作者Jose Herrera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:00:55