我有 2 个列表。 列表 1(比如 X)是 =
[ 0 , 0 , 0 , 0 ]
列表 2 是列表的列表(假设为 Y),其行大小始终为 4 的倍数,但行大小可能不同。
例如 -
[[1,2,3,4,5,6,7,8] , [1,2,3,4]]
我想找到 4 组元素的按列总和
因此对于此示例,总和将为 [2,4,6,8] [5,6,7,8]
目前,我正在使用
X = [sum(e) for e in zip(X , Y[j][count:count+4])]
对于一次完整的列遍历,计数是固定的。所以假设 Y 中的列数是 200。因此对于 4 个数字组的每次遍历,计数将保持不变(它用于对矩阵进行切片)
但是一旦最后 4 个元素的行长度发生变化,X 就会变为空。 一旦 Y 完全按列遍历,计数就会增加。
请询问更多详情。如果需要,我还可以以包含矩阵和我当前使用的代码的文本文件的形式提供一个最小的可重现示例。
最佳答案
不完全确定您的问题中的所有内容是如何组合在一起的,但是对于“不同长度的压缩列表”问题,您可以使用 itertools.zip_longest
使用 fillvalue=0
。然后,您可以在第二步中将得到的总和列表分割为多个 block 。
>>> lsts = [[1,2,3,4,5,6,7,8] , [1,2,3,4]]
>>> from itertools import zip_longest
>>> sums = [sum(x) for x in zip_longest(*lsts, fillvalue=0)]
>>> [sums[i:i+4] for i in range(0, len(sums), 4)]
[[2, 4, 6, 8], [5, 6, 7, 8]]
关于python - 添加 2 个不同长度的列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57071276/