如何获得分层嵌套列表结构的平均值?

时间:2019-08-16 14:36:18

标签: python

我应该使用层次结构来计算平均值,例如,在子列表[8,[9,91],11]中,我应该首先计算[9,91]的平均值,然后计算[8,average of [9,91], 11]的平均值,然后再计算总平均数:[2,average of [3,5], average of ([8,average of [9,91], 11])等...

我一直在使用http://www.pythontutor.com/visualize.html#mode=edit

可视化代码

任何建议都值得赞赏!

2 个答案:

答案 0 :(得分:3)

您可以使用简单的递归:

def ave(d):
  return sum(ave(i) if isinstance(i, list) else i for i in d)/float(len(d))

data = [2,[3,5],[6,6,7],[8,[9,91],11],[12,121,[[14]]]]
print(ave(data))

输出:

16.866666666666667

答案 1 :(得分:0)

这似乎是家庭作业,但您可以尝试一下。我不知道答案应该是什么,但是我想到了:

def average_of(l):
    return sum(
        [(
            e if type(e) is int else average_of(e)
        ) for e in l if type(e)]
    ) / len(l)

a = [2, [3, 5], [6, 6, 7], [8, [9, 91], 11], [12, 121, [[14]]]]

print(average_of(a))

它打印

16.866666666666667

编辑:我和Ajax似乎同时发布了相同的答案。

相关问题