编写矩阵的对角线(二维列表)功能

时间:2019-04-13 08:54:21

标签: python matrix

我想编写一个函数,该函数接受一个参数,即二维二维矩阵,并从IDLE的交互式窗口返回输入矩阵的对角线。

我尝试了几种方法,但是每当我输入一个矩阵(4×4中的1到16)时,我都会得到TypeError并说4 positional arguments but 5 were given

尝试使用input()可以输入所需的矩阵时,我已经弄乱了,但是仍然出现相同的错误。

这就是我想要做的:

>>> m1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
>>> diagonal(m1)
[1, 6, 11, 16]

我将如何处理?我也看到过很多使用Numpy的帖子,但是我不确定是否可以在此作业中使用它。

2 个答案:

答案 0 :(得分:2)

enumerate()在这里使用方矩阵非常方便,因为当您遍历数组时,它将为您提供正确的索引。您可以综合使用它来获取正确的索引和正确的矩阵。

def diagonal(mat):
    return [el[i] for i, el in enumerate(mat)]

m1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

diagonal(m1)
>> [1, 6, 11, 16]

答案 1 :(得分:0)

尝试一下:

def diagonal(m1):
    n = len(m1)
    l = []
    for i in range(n):
        l.append(m1[i][i])

    return l

m1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
print(diagonal(m1))