如何将列表列表中的值添加在一起?

问题描述 投票:0回答:3

我有这个列表列表的单个列表(这是我通过在列表列表上执行 3 选择 2 组合而获得的):

[([1, 0, 1, 1], [1, 0, 1, 10]), ([1, 0, 1, 1], [1, 1, 0, 100]), ([1, 0, 1, 10], [1, 1, 0, 100])]

所以它有3组,这3组每个有2个列表,这2个列表每个有4个整数

我想将这些列表对中的整数相加,为每组生成一个总和列表。 它应该看起来像:

([2,0,2,11],[2,1,1,101],[2,1,1,110])

为了轻松地展示这里的问题,我将示例简化为“3组,每组2个列表,包含4个整数”,但实际上它大约是“1000组,每组10个列表,包含30个整数”。

我尝试用谷歌搜索如何做到这一点,并得到了一些 lambda 和 zip 的东西,但我无法让它工作。我也尝试制作一个自定义循环,我大多得到将 list1 添加到 list2 的推荐情况,但我只有一个列表。我遇到了一堆错误。如果有人可以帮忙,我很感激,谢谢。

python list tuples addition
3个回答
0
投票

所以这里有一个使用

sum
zip
的解决方案:

result = [[sum(row) for row in zip(*pair)] for pair in data]

您可以分解每个调用并添加打印以更好地理解每个部分的作用,我将尝试解释:


0
投票

其他帖子遗漏的是,这个问题必须可以推广到 OP 的请求。它必须在

"1000 groups of 10 lists of 30 integers"
上起作用。因此解决方案如下:

tuple([sum(q[i] for q in p) for i in range(len(p[0]))] for p in l)

这个列表生成器总结了每个列表的列,其中每个列表都是主列表的一部分,就像OP中描述的那样。这个问题是可推广的,因为它现在不再被限定为 2 个列表的总和,而是所有列表的总和。


0
投票

您可以使用 numpy 来添加数组,但您将获得一个 numpy 数组作为 resskksult。

import numpy as np
lista = [([1, 0, 1, 1], [1, 0, 1, 10]), ([1, 0, 1, 1], [1, 1, 0, 100]), ([1, 0, 
        1, 10], [1, 1, 0, 100])]
list(map(lambda x: np.array(x[0]) + np.array(x[1]), lista))
© www.soinside.com 2019 - 2024. All rights reserved.