Python 想找到一种方法来平均处理多个列表吗
假设我们在python中创建这样一个列表:Python 想找到一种方法来平均处理多个列表吗,python,list,nested,Python,List,Nested,假设我们在python中创建这样一个列表: [[1, 2, 3], [1, 3, 4], [2, 4, 5]] 然后我想取1+1+2除以3,得到该元素的平均值并存储在一个新列表中。我想对第二个元素和第三个元素再做一次。如何简洁地做到这一点?(除了多个循环,我想不出其他方法。) 输出应该是一个新列表[(1+1+2)、(2+3+4)、(3+4+5)] 非常感谢 平均值: >>> data = [[1, 2, 3], [1, 3, 4], [2, 4, 5]] >>&g
[[1, 2, 3], [1, 3, 4], [2, 4, 5]]
然后我想取1+1+2
除以3,得到该元素的平均值并存储在一个新列表中。我想对第二个元素和第三个元素再做一次。如何简洁地做到这一点?(除了多个循环,我想不出其他方法。)
输出应该是一个新列表[(1+1+2)、(2+3+4)、(3+4+5)]
非常感谢 平均值:
>>> data = [[1, 2, 3], [1, 3, 4], [2, 4, 5]]
>>> from __future__ import division
>>> [sum(e)/len(e) for e in zip(*data)]
[1.3333333333333333, 3.0, 4.0]
总额:
zip(*l)
。否则,只需对每个子列表求平均值(因此得到的是2、2-2/3和3-2/3,而不是1-1/3、3和4)
>>> data = [[1, 2, 3], [1, 3, 4], [2, 4, 5]]
>>> [sum(e) for e in zip(*data)]
[4, 9, 12]
>>> data
[[1, 2, 3], [1, 3, 4], [2, 4, 5]]
>>> zip(*data)
[(1, 1, 2), (2, 3, 4), (3, 4, 5)]
>>> l = [[1, 2, 3], [1, 3, 4], [2, 4, 5]]
>>> zip(*l)
[(1, 1, 2), (2, 3, 4), (3, 4, 5)]
>>> def average(nums, default=float('nan')):
... return sum(nums) / float(len(nums)) if nums else default
...
>>> [average(n) for n in zip(*l)]
[2.0, 2.6666666666666665, 3.6666666666666665]