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



我应该使用层次结构计算它的平均值,例如,在子列表[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 可视化代码

任何建议不胜感激!

您可以使用简单的递归:

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

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

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和我似乎同时发布了相同的答案。

最新更新