列表的总和
采取以下清单
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)]
输出