列表的总和

采取以下清单

matrix1 = [[1, 1], [2, 3]]
matrix2 = [[1, 1], [2, 3]]

如何在不使用其他库(例如 pandas、numpy 等)的情况下返回各种列表列表的总和,在这种情况下为 2,如

[[2, 2], [4, 6]]
[[2, 2], [4, 6]]

与以下

def addMatrix(m1, m2):

    if len(m1) == len(m2):
        return [x[0] + x[1] for x in zip(m1, m2)]
    else:
        raise ValueError("Given matrices are not the same size.")

它返回

>>> addMatrix(matrix1, matrix2)
[[1, 1, 1, 1], [2, 3, 2, 3]]

这不是人们想要的,只适用于列表,而不是列表列表。

一个人也尝试了以下,但给出了与上面相同的输出

new = [] 

def add(m1, m2):
    for i, value in enumerate(m1):
        if len(m1) == len(m2):
            additional = m2[i]
            new.append(value + additional)
        else:
            raise ValueError("Given matrices are not the same size.")

人们知道如何使用 numpy 做到这一点,但是人们想要的是一种不使用任何库的方法。

这是一个带有 numpy 的工作解决方案

import numpy as np

matrix1_np = np.asarray(matrix1)
matrix2_np = np.asarray(matrix2)
add = matrix1_np + matrix2_np
add.tolist()

回答

[list(map(sum, zip(*i))) for i in zip(matrix1, matrix2)]

输出


以上是列表的总和的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>