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

如何在Python中生成二维矩阵的所有唯一排列并维持顺序?

在Python中生成二维矩阵列元素的所有组合(保持顺序)

你要的效果本质是取原矩阵每一列的所有可选元素,生成它们的笛卡尔积,这样每个结果子列表的位置对应原矩阵的列,自然保持顺序。下面是两种实用实现方式:

用itertools.product(最简洁高效)

Python标准库的itertools.product专门用来生成笛卡尔积,完美匹配这个需求:

import itertools

matrix = [[1, 2, 3], [4, 5, 6]]
# 转置矩阵,得到各列的元素集合:[[1,4], [2,5], [3,6]]
columns = list(zip(*matrix))
# 生成所有列元素的组合,再转成列表格式
result = [list(combo) for combo in itertools.product(*columns)]

print(result)

运行后输出就是你要的结果:

[[1, 2, 3], [1, 2, 6], [1, 5, 3], [1, 5, 6], [4, 2, 3], [4, 2, 6], [4, 5, 3], [4, 5, 6]]

手动实现(不依赖标准库)

如果不想用itertools,可以用循环逐步构建结果:

matrix = [[1, 2, 3], [4, 5, 6]]
columns = list(zip(*matrix))

result = [[]]
# 遍历每一列,逐步扩展组合
for col in columns:
    temp = []
    for existing in result:
        for num in col:
            temp.append(existing + [num])
    result = temp

print(result)

关键逻辑说明

  • zip(*matrix)是核心操作:把原矩阵的行转成列,让我们能直接获取每一列的所有可选元素。
  • 两种方法的结果数量都是每列元素个数的乘积,这里每列有2个元素,共3列,所以2^3=8个结果,完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:15:36