首页 > 解决方案 > 组合二维数组(矩阵)元素

问题描述

我有一个像[[1,2,3], [4,5,6], [7,8,9]]这样的二维数组。

所以我需要将每个元素与所有其他元素组合形成另一个子列表并获得一个像[[1,4,7], [1,4,8], [1,4,9], [2,4,7 ], [2,4,8], [2,4,9], [3,4,7], [3,4,8], [3,4,9], [1,5,7], [...], [...], ... etc]Python3中。

子列表的数量可能不同。

我对循环使用了不同的方法,但没有任何方法可以正常工作。不使用 itertools怎么办?提前致谢!

我尝试迭代数组,但我无法完全体现这个想法。

arr = [[1,2,3], [4,5,6], [7,8,9]]
total = []
for i in arr[0]:
    for index, j in enumerate(arr[1:]):
        res = [i]
        for indx, n in enumerate(j):
            res.append(n)
            for m in arr[index+1]:
                res.append(m)
                break
        print(res)

而我只有这个

[1, 4, 4, 5, 4, 6, 4]
[1, 7, 7, 8, 7, 9, 7]
[2, 4, 4, 5, 4, 6, 4]
[2, 7, 7, 8, 7, 9, 7]
[3, 4, 4, 5, 4, 6, 4]
[3, 7, 7, 8, 7, 9, 7] .. 这是不正确的。

标签: arrayspython-3.xlistloopsmatrix

解决方案


只需使用来自 itertools 的笛卡尔积

from  itertools import product
arr = [[1,2,3], [4,5,6], [7,8,9]]
prod = product(*arr)
print(list(prod))

推荐阅读