【问题标题】:Combining 2-dimensional array (matrix) elements组合二维数组(矩阵)元素
【发布时间】:2021-07-10 06:00:02
【问题描述】:

我有一个二维数组,例如 [[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]、[...]、[...]、...等]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] .. 这是不正确的。

【问题讨论】:

    标签: arrays python-3.x list loops matrix


    【解决方案1】:

    只需使用 itertools 中的笛卡尔积

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

    【讨论】: