本质上,我想对并行列表中的项目求和,如下所示:
[[1, 2, 3, 4],
[4, 3, 2, 1]] # list of lists (can be more than two)
[5, 5, 5, 5] # result
但是,问题是列表多了一个维度,本质上是“3D”。但我只想总结最里面的对中的第二项:
[[[0, 1], [0, 2], [0, 3], [0, 4]],
[[1, 4], [1, 3], [1, 2], [1, 1]]] # add the numbers downward
[[0, 5], [0, 5], [0, 5], [0, 5]] # result
每对中的第一个项目可以单独放置。对他们来说,只复制第一行就可以了。
无论如何,我想不出这样做的好方法。我找到了这种方式:
l = [[[0, 1], [0, 2], [0, 3], [0, 4]],
[[1, 4], [1, 3], [1, 2], [1, 1]]]
s = map(sum, zip(*[[j[1] for j in i] for i in l])) # to be summed
o = [i[0] for i in l[0]] # others
result = [[j for j in i] for i in zip(o, s)]
...但我不能忍受它。如果有更好的方法,我将不胜感激。
感谢您的所有脑力劳动!
PS 请记住,列表中可以有任意数量的列表,而不仅仅是 2 个!