从元组列表中的第i个元素计算平均值

时间:2015-04-28 20:19:40

标签: python python-3.x tuples average

注意:我已经对数据集进行了编辑,我认为这些编辑可以更好地计算平均值。

我的数据如下:

[[2015, 0.23, 0.45, 1.23],
[2014, 1.22, 2.54, 0.98],
[2013, 0.33, 2.11, 0.43],
...]

数据现在是列表中的列表。子列表中的第一个元素是增长年份,以下三个浮点数是该年份的环宽度。我的问题是:有没有办法计算每个子列表中最后三个元素的平均值,并生成一个新的列表,只有年份,平均增长看起来像:

[[2015, 1.58], [2014, 0.956], ...]

1.58(1.22 + 2.54 + 0.98)/3

很抱歉之前的混乱,我是Stack Overflow的新手,我可以说更多信息更好。

这是我到目前为止的代码:

   for i in list[0]:
      newlist = [(list[1] + list[2] + list[3])/3]

但这似乎不起作用。

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

如果您的数据采用以下格式:

trees= [[2015, 0.23, 0.45, 1.23],
        [2014, 1.22, 2.54, 0.98],
        [2013, 0.33, 2.11, 0.43]]

你可以这样做:

new_trees=[]

for x in trees:
    average="{0:.2f}".format(sum(x[1:])/len(x[1:]))
    new_trees.append([x[0]]+[average])
                     #year + average 

这将输出:

>>> new_trees
[[2015, '0.64'], [2014, '1.58'], [2013, '0.96']]  

答案 1 :(得分:0)

@logic有第一个正确的答案(应该是接受的答案),这里是如何使用短列表理解。

trees= [[2015, 0.23, 0.45, 1.23],
        [2014, 1.22, 2.54, 0.98],
        [2013, 0.33, 2.11, 0.43]]

data = [ (x[0], (sum(x[1:]) / len(x[1:])) ) for x in trees]

产生这个元组列表:

[(2015, 0.6366666666666667), (2014, 1.58), (2013, 0.9566666666666667)]