我应该使用层次结构来计算平均值,例如,在子列表[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
可视化代码任何建议都值得赞赏!
答案 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似乎同时发布了相同的答案。