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

2024-04-29 02:52:08 发布

您现在位置: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可视化代码

任何建议都将不胜感激


Tags: of代码comhttp列表层次结构mode可视化
2条回答

这看起来像是家庭作业,但你可以试一试。我不知道答案应该是什么,但我想到了这个:

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

编辑:阿贾克斯和我似乎在同一时间发布了相同的答案

可以使用简单的递归:

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

相关问题 更多 >