如何获取嵌套多个列表的平均值?

3
这是最简单的情况:
input [2,3,[4,6]]

该程序应首先计算列表的平均值,然后计算2和3的平均值,之后应计算总平均值。

关于输出:在您的解释中,您说输出应该是多少行取决于有多少子列表,它们有多深等等。但是您提供的代码只返回一个值。那么它是哪一个呢?您只需要完整的平均值吗?您需要所有不同列表的单独平均值吗? - palivek
1
5和2的平均值是3.75,为什么你的答案是3? - jose_bacoy
1个回答

2

一个简单的实现支持嵌套列表,不需要任何特定的库,并且可以在任何Python版本中使用:

最初的回答:

def nested_avg(elements):
    try:
        seq = iter(elements)
    except TypeError:
        return elements
    s = 0
    while True:
        try:
            el = next(seq)
        except StopIteration:
            return s / len(elements)
        s += nested_avg(el)


l1=[2,3,[4,6]]
print(int(nested_avg(l1)))

l2=[2,3,[4,[5,7]]]
print(int(nested_avg(l2)))

l1和l2输入都产生相同的结果,即3

注意:该代码未涵盖所有可能的输入数据检查,需要您将其准备好进行生产:D

原始答案: "最初的回答"


你为什么选择用//操作符?我担心随着子列表的深入,结果会变得越来越错误。实际上,你正在对所有中间答案进行四舍五入,这意味着答案将开始偏离。我错了吗? - palivek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接