prefer_indic = [[[0, 4, 6, 5, 45, 1], [2, 3, 5, 6, 7, 1]],[[0, 0.27, 6, 7, 32, 3], [0.01, 0.39, 0, 0, 0, 0]]]
我想创建一个总和列表,它将每个列表中的每个值与每个对应的值相加。准确地说,我想要:
sum = [[0+0, 4+0.27, 6+6, 5+7, 45+32, 1+3], [2+0.1, 3+0.39, 5+0, 6+0, 7+0, 1+0]]
我想用一个for循环来做到这一点,这样我就可以对更大的list列表使用相同的算法。我简化了示例以使其更具可读性。我有python 2.7。
使用此zip()
函数可以配对2个或更多列表中的元素,然后使用sum()
来合并组合的值:
summed = [[sum(zipped) for zipped in zip(*column)] for column in zip(*prefer_indic)]
请注意该zip(*prefer_indic)
调用,它会转置矩阵,以便您将嵌套列表(而不是行)的“列”配对。
如果您的列表较大,则使用;的迭代版本zip
可能会有所帮助。使用该future_builtins.zip()
位置,您的代码将自动与Python 3向前兼容。
try:
from future_builtins import zip
except ImportError:
# Python 3
summed = [[sum(zipped) for zipped in zip(*column)] for column in zip(*prefer_indic)]
演示:
>>> from future_builtins import zip
>>> prefer_indic = [[[0, 4, 6, 5, 45, 1], [2, 3, 5, 6, 7, 1]],[[0, 0.27, 6, 7, 32, 3], [0.01, 0.39, 0, 0, 0, 0]]]
>>> [[sum(zipped) for zipped in zip(*column)] for column in zip(*prefer_indic)]
[[0, 4.27, 12, 12, 77, 4], [2.01, 3.39, 5, 6, 7, 1]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句