如何从任何长度的列表中获取列?

时间:2018-04-17 13:13:08

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

之前可能会问过这个问题,但我找不到我需要的答案。我有兴趣从列表的任何长度中获取列。我知道如何只在一定的时间内完成它。

我必须检查两个矩阵,如果其中一个是另一个的转置。因为它们的长度可以变化,所以对我来说不是那么容易。

matrix_1 = [[1, 2], [3, 4], [5, 6]]
matrix_2 = [[1, 3, 5], [2, 4, 6]]

这应该返回True。

3 个答案:

答案 0 :(得分:2)

由于您提到了矩阵,因此您应该使用第三方库numpy

import numpy as np

matrix_1 = np.array([[1, 2], [3, 4], [5, 6]])

matrix_2 = np.array([[1, 3, 5], [2, 4, 6]])

res = np.array_equal(matrix_1, matrix_2.T)  # True
res = (matrix_1 == matrix_2.T).all()        # True

答案 1 :(得分:2)

纯python回答:zip转置(经典),然后转换为list(因为zip产生tuples,所以比较总是失败),然后比较:

matrix_1 = [[1, 2], [3, 4], [5, 6]]
matrix_2 = [[1, 3, 5], [2, 4, 6]]

matrix_1 == [list(x) for x in zip(*matrix_2)]

答案 2 :(得分:0)

感谢您的回答,但我自己设法解决了我的问题。抱歉浪费你的时间。解决方案非常简单,但我只是努力解决这个问题。无论如何,如果有人有兴趣:

def is_transpose(matrix_1, matrix_2):

    for i in range(len(matrix_1)):
        for j in range(len(matrix_1[i])):
            if matrix_1[i][j] != matrix_2[j][i]:
                return False
    return True