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

如何从多组元素中生成跨组二元组合?

生成不同分组间的二元元素组合

你需要的是任意两个不同分组之间的所有元素配对,而itertools.product(*groups.values())会生成每个分组取一个元素的N元组(N为分组数量),自然不符合需求。可以通过以下方式实现:

解决方案

利用itertools.combinations先筛选出所有两两不同的分组对,再对每对分组用itertools.product生成元素组合:

函数实现(分步版)

import itertools

def get_combs(group_list):
    result = []
    # 遍历所有不重复的两两分组对
    for group_a, group_b in itertools.combinations(group_list, 2):
        # 生成当前分组对的所有元素二元组合并加入结果
        result.extend(itertools.product(group_a, group_b))
    return result

简化版(列表推导式)

import itertools

def get_combs(group_list):
    return [
        pair 
        for groups_pair in itertools.combinations(group_list, 2) 
        for pair in itertools.product(*groups_pair)
    ]

测试验证

groups = {'g1': [1, 2, 3], 'g2': [55, 66], 'g3': [888]}
print(get_combs(groups.values()))
# 输出:[(1, 55), (1, 66), (1, 888), (2, 55), (2, 66), (2, 888), (3, 55), (3, 66), (3, 888), (55, 888), (66, 888)]

逻辑说明

  1. itertools.combinations(group_list, 2):从分组列表中选出所有不重复的两两分组对(例如(g1,g2)、(g1,g3)、(g2,g3)),避免生成反向配对(如(g2,g1))导致重复结果。
  2. itertools.product(group_a, group_b):生成两个分组内元素的所有有序二元组合,正好匹配你需要的跨分组元素配对形式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:13:32