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

Python实现两个数组对应位置所有可能组合生成矩阵的方法

Python实现等长数组对应位置全组合矩阵

需求说明

给定两个等长数组,需要生成所有对应位置二选一的组合,构成最终矩阵。例如输入array1 = ['A', 'B', 'C']、array2 = ['a', 'b', 'c']时,最终会得到8种组合的2维矩阵。

实现代码

方法1:二进制掩码实现(无需依赖第三方库)

def generate_comb_matrix(arr1, arr2):
    if len(arr1) != len(arr2):
        raise ValueError("两个输入数组长度必须一致")
    n = len(arr1)
    matrix = []
    # 掩码从0到2^n -1,每一位代表对应位置选第一个还是第二个数组的元素
    for mask in range(1 << n):
        row = []
        for idx in range(n):
            row.append(arr2[idx] if mask & (1 << idx) else arr1[idx])
        matrix.append(row)
    return matrix

# 测试调用
array1 = ['A', 'B', 'C']
array2 = ['a', 'b', 'c']
res = generate_comb_matrix(array1, array2)
for row in res:
    print(row)

方法2:使用itertools.product简化实现

from itertools import product

array1 = ['A', 'B', 'C']
array2 = ['a', 'b', 'c']
# 先把两个数组按位置打包为可选元素对,再求笛卡尔积
res = [list(comb) for comb in product(*zip(array1, array2))]

输出结果

两种方法得到的输出一致,如下:

['A', 'B', 'C']
['a', 'B', 'C']
['A', 'b', 'C']
['a', 'b', 'C']
['A', 'B', 'c']
['a', 'B', 'c']
['A', 'b', 'c']
['a', 'b', 'c']

注:你给出的期望输出最后一行存在笔误,全组合共8种不同的行,最后一行为['a', 'b', 'c']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:04