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

Python中从列表生成所有互不重叠配对集合的最快实现方案

列表不重叠全配对实现方法

实现逻辑

这类问题最优时间复杂度为O(n!!)(n为列表长度,仅n为偶数时有合法输出),可以用递归思路快速实现:

  • 每次取当前待拆分列表的第一个元素,和剩余所有元素逐一配对
  • 每完成一次配对后,将两个已配对元素从待拆分列表中移除,递归处理剩余元素
  • 待拆分列表为空时,返回当前生成的配对集合即可

Python 示例代码

def get_all_pairings(lst):
    if not lst:
        yield []
        return
    first = lst[0]
    for i in range(1, len(lst)):
        pair = (first, lst[i])
        for rest in get_all_pairings(lst[1:i] + lst[i+1:]):
            yield [pair] + rest

# 测试示例
test_lst = ['A', 'B', 'C', 'D']
for idx, pairing in enumerate(get_all_pairings(test_lst), 1):
    print(f"{idx}. {{{','.join([f'[{p[0]},{p[1]}]' for p in pairing])}}}")

输出结果

运行代码后会得到你需要的结果:

  1. {[A,B],[C,D]}
  2. {[A,C],[B,D]}
  3. {[A,D],[B,C]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:54:03