从矩阵python 2的右上角到左下角打印对角线

时间:2016-04-12 04:04:15

标签: python matrix

对我的代码有疑问,我真的迷路了 我需要从右上角左下角的maxtrix创建空对角线列表输出数字,所以它是[5,9,13,17,21]。

matrix = [[ 1,  2,  3,  4,  5],
          [ 6,  7,  8,  9, 10],
          [11, 12, 13, 14, 15],
          [16, 17, 18, 19, 20],
          [21, 22, 23, 24, 25]]

diagonal = []
for posi in matrix: 
    diagonal.append(posi[len(matrix)-1])

print diagonal

这是我得到了多远,但它只输出最后一组数字。

我只能更改

的值
for posi in ##here##: 
    diagonal.append(##here## ##here##)

我拥有的选项是:

matrix[posi]
matrix
range(len(matrix)-1)
posi
[len(matrix)-1]
[len(matrix)-1-posi)
posi
And like [4][0], [3][1], [1],[2]
[0,1,2,3,4]

它一直试图弄明白并且现在失去了,非常感谢任何帮助谢谢

3 个答案:

答案 0 :(得分:0)

如果你必须使用其中一个选项,我会选择:

for posi in [0,1,2,3,4]: 
    diagonal.append(matrix[posi][len(matrix)-1-posi])

答案 1 :(得分:0)

也许,这是Enumerate

的简单解决方案
diagonal = []
for i, j in enumerate(matrix):
    diagonal.append(j[-(i+1)])

# or using list comprehension along with enumerate
diagonal = [j[-(i+1)] for i, j in enumerate(matrix)]

print diagonal

答案 2 :(得分:0)

虽然正在寻找的选项可能是:

for posi in range(len(matrix)):
    diagonal.append(matrix[posi][len(matrix)-1-posi])

这不是非常pythonic,通常你会迭代矩阵与索引,只是使用负索引从后面计数,所以一个简单的列表理解:

diagonal = [row[-posi] for posi, row in enumerate(matrix, 1)]
# [5, 9, 13, 17, 21]