之前可能会问过这个问题,但我找不到我需要的答案。我有兴趣从列表的任何长度中获取列。我知道如何只在一定的时间内完成它。
我必须检查两个矩阵,如果其中一个是另一个的转置。因为它们的长度可以变化,所以对我来说不是那么容易。
matrix_1 = [[1, 2], [3, 4], [5, 6]]
matrix_2 = [[1, 3, 5], [2, 4, 6]]
这应该返回True。
答案 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