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

如何在已有全组合的列表中新增元素后获取新增三元组合?

高效计算新增元素后的三元组合

当原列表规模较大时,重新生成全部三元组合再筛选新增项会浪费大量计算资源,直接针对新增元素的组合类型生成目标三元组是最优方案。新增的三元组合可分为三类:

  • 1个新增元素 + 原列表中任意2个元素的组合
  • 2个新增元素 + 原列表中任意1个元素的组合
  • 3个均为新增元素的组合(仅当新增元素数量≥3时存在)

代码实现

import itertools

# 原列表(实际场景可能包含约100个元素)
old_list = ['a', 'b', 'c', 'd']
# 新增的候选元素
new_elements = ['e', 'f']

new_triples = []

# 生成「1个新增元素 + 原列表二元组」的组合
for new_item in new_elements:
    for pair in itertools.combinations(old_list, 2):
        new_triples.append(list(pair) + [new_item])

# 生成「2个新增元素 + 原列表单个元素」的组合
if len(new_elements) >= 2:
    for new_pair in itertools.combinations(new_elements, 2):
        for old_item in old_list:
            new_triples.append(list(new_pair) + [old_item])

# 生成「3个新增元素」的组合(当新增元素数量≥3时)
if len(new_elements) >= 3:
    new_triples.extend(list(comb) for comb in itertools.combinations(new_elements, 3))

# 输出结果示例
for triple in new_triples:
    print(triple)

效率说明

以原列表100个元素、新增2个元素为例:

  • 原三元组合总数为 C(100,3) = 161700
  • 新增组合总数仅为 C(100,2)*2 + C(100,1) = 4950*2 + 100 = 10000
    计算量仅为全量生成的6%左右,完全规避了重复计算原有组合的开销。

内容的提问来源于stack exchange,提问作者shawn.mek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:33:13