将嵌套列表值的平均值放入新列表中

时间:2015-10-01 05:52:29

标签: python

我有以下列表:

x = [(27.3703703703704, 2.5679012345679, 5.67901234567901,
      6.97530864197531, 1.90123456790123, 0.740740740740741,
      0.440136054421769, 0.867718446601942),
     (25.2608695652174, 1.73913043478261, 6.07246376811594,
      7.3768115942029, 1.57971014492754, 0.710144927536232,
      0.4875, 0.710227272727273)]

我正在寻找一种方法来获得嵌套在主列表中的每个列表的平均值,并创建一个新的平均列表。因此,在上面列表的情况下,输出将类似于:

[[26.315],[2.145],[5.87],etc...]

无论嵌套在主列表中的列表数量如何,我都希望应用此公式。

4 个答案:

答案 0 :(得分:0)

我假设你的单元素列表元组列表正在寻找元组内每个解压缩元素的总和,以及这些选项的列表。如果这不是你想要的,那就行不通了。

result = [sum([sublst[0] for sublst in tup])/len(tup) for tup in x]

编辑以匹配已更改的问题

result = [sum(tup)/len(tup) for tup in x]

编辑以匹配您进一步更改的问题

result = [[sum(tup)/len(tup)] for tup in x]

答案 1 :(得分:0)

实现这一目标的一个简单方法是:

means = []     # Defines a new empty list
for sublist in x:     # iterates over the tuples in your list
    means.append([sum(sublist)/len(sublist)])    # Put the mean of the sublist in the means list

无论您的列表中有多少个子列表,这都可以使用。 我建议你阅读一下列表理解: https://docs.python.org/2/tutorial/datastructures.html

答案 2 :(得分:0)

看起来您正在寻找zip功能:

[sum(l)/len(l) for l in zip(*x)]

zip成对组合了一组元组或列表,看起来就像你想要的平均值一样。然后你只需使用sum()/len()来计算每对的平均值。

*x符号表示将列表作为单独的参数传递,即好像您调用了:zip(x[0], x[1], ..., x[len(x)-1])

答案 3 :(得分:-2)

r = [[sum(i)/len(i)] for i in x]