我想返回对角线,即在给定的矩阵中从左到右,从右到左,我使用列表推导来这样做,但是我上来时,我的眼神是对返回左到右矩阵的复杂理解。
我想知道是否有更简单的方法来编写将对角线从右向左返回的理解?而且,鉴于我是菜鸟,我只是开始学习语言,我想知道right_left理解是否甚至是常规的?
matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
left_right = [arr[i][i]
for i in range(len(arr))]
right_left = [arr[i][[-j
for j in range(-len(arr)+1,1)][i]]
for i in range(-len(arr),0)]
答案 0 :(得分:2)
left_right = [arr[i][-(i+1)] for i in range(len(arr))]
有关否定性标记的解释,请阅读:https://stackoverflow.com/a/11367936/8326775
答案 1 :(得分:0)
>>> import numpy as np
>>> matrix = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
>>> np.diag(matrix)
array([1, 5, 9])
>>> np.diag(matrix, k=1)
array([2, 6])
>>> np.diag(matrix, k=-1)
array([4, 8])
答案 2 :(得分:0)
[list(reversed(matrix[i]))[i] for i in range(len(matrix))]
# more transparent version:
for i in range(len(matrix)):
row = list(reversed(matrix[i]))
el = row[i]
print("reversed row {} = {} -> extract element {} -> gives {}".format(i, row, i, el))
#reversed row 0 = [3, 2, 1] -> extract element 0 -> gives 3
#reversed row 1 = [6, 5, 4] -> extract element 1 -> gives 5
#reversed row 2 = [9, 8, 7] -> extract element 2 -> gives 7