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

如何生成给定整数列表所有不含相同元素的有序二元组合?

实现方案

Python 最简实现

直接用标准库itertools.permutations即可,该函数原生支持生成可迭代对象指定长度的所有有序排列,天然排除同元素配对,底层为C实现,效率远高于手写循环。
示例代码:

import itertools

original_list = [0,1,2,3]
# 第二个参数指定取2个元素生成排列
result = list(itertools.permutations(original_list, 2))
# 若需要子元素为列表而非元组,追加转换即可
result = [list(item) for item in result]

输出结果和示例完全一致:[[0,1],[0,2],[0,3],[1,0],[1,2],[1,3],[2,0],[2,1],[2,3],[3,0],[3,1],[3,2]]


通用跨语言实现逻辑

如果不想依赖标准库,或者需要移植到其他语言,用双层循环加判断即可,逻辑非常直观:

original_list = [0,1,2,3]
result = []
for a in original_list:
    for b in original_list:
        if a != b:
            result.append([a,b])

效率说明

两种方案的时间复杂度都是O(n²),这是该需求的理论下限——最终要生成的结果总数就是n*(n-1)个,没有更低复杂度的实现空间。如果原列表很长不需要一次性存所有结果,Python环境下可以直接用itertools.permutations返回的迭代器逐个处理,能大幅节省内存占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:05