Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 想找到一种方法来平均处理多个列表吗_Python_List_Nested - Fatal编程技术网

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

假设我们在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]]
>>> from __future__ import division
>>> [sum(e)/len(e) for e in zip(*data)]
 [1.3333333333333333, 3.0, 4.0]
总额:


返回元组列表,其中第i个元组包含每个参数序列或iterables中的第i个元素

当参数已经在列表或元组中,但需要为需要单独位置参数的函数调用解包时。。。使用*-运算符编写函数调用,将参数从列表或元组中解包出来

我想你想在最后一行写
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]