对我的代码有疑问,我真的迷路了 我需要从右上角左下角的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]
它一直试图弄明白并且现在失去了,非常感谢任何帮助谢谢
答案 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]