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

Python如何使用itertools生成各位置取自对应固定列表的组合

实现方案

你需要使用itertools.product函数完成需求,该函数可以从每个传入的序列中各取一个元素,按顺序组成元组,完全匹配你「每个位置的元素仅来自对应列表」的要求。

修正后的代码如下:

from itertools import product

item_1 = [1,2,3,4,5,6,8,7]
item_2 = [10,12,14,15,16,17,19]
item_3 = [21,22,23,27,25,29]
item_4 = [32,33,36,37,38,39]
item_5 = [42,43,45,46,47,49]
item_6 = [51,52,53,57,59]
item_7 = [61,62,68]
item_8 = [71,72,75,78,79]

# 按顺序存放所有列表,不要拼接元素
all_lists = [item_1, item_2, item_3, item_4, item_5, item_6, item_7, item_8]

# 调用product生成笛卡尔积,解包传入所有列表
for a,b,c,d,e,f,g,h in product(*all_lists):
    print((a,b,c,d,e,f,g,h))
原代码问题说明

你之前使用的combinations函数的作用是从单个输入序列中选取指定数量的不重复元素,按升序生成组合,所以你把所有列表元素拼接后调用该函数,自然会出现元素跨列表占位置的问题,和你的需求场景完全不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:48:03