求任意嵌套列表列表中每个元素的平均值

Find the average of each element in a list of arbitrarily nested lists

我正在尝试制作一个函数,该函数接受一个列表,其中的元素可以是浮点数或任意嵌套的浮点数列表,returns 一个长度相同的列表,每个元素都被其平均值替换。

即。 lst = [1,[2,[3,[4,[5]]]]] #average of lst[0] = 1 average of lst[1] = (((((4+5)/2)+3)/2)+2)/2 print(Avg(lst)) 应该打印 [1,2.875] 这是我到目前为止得到的:

def Avg(lst,n=1):
    if lst = [] and n > 1:
        return 0
    elif lst = []:
        return lst
    elif type(lst) == float:
        return lst
    elif type(lst[0]) == float and n > 1:
        return (lst[0] + Avg(lst[1:]))/len(lst)
    elif type(lst[0]) == list:
        total = 0
        length = 0
        for e in lst[0]:
            total += Avg(e)
            length += 1
        return [total/length] + Avg(lst[1:])
    return [lst[0]] + Avg(lst[1:])

有人能给我指出正确的方向吗?

我选择了遍历列表的方式,如果当前元素本身就是一个列表,则使用递归。我只检查了 floatint 来确定某些东西是否是数字,但如果需要的话很容易扩展,因为它在一个函数中是孤立的。

事不宜迟:

def is_numeric(item):
    return type(item) == float or type(item) == int

def Avg(something):
    if is_numeric(something):
        return something
    for i, element in enumerate(something):
        if not is_numeric(element):
            sub_element = Avg(element)
            l = len(sub_element)
            something[i] = sum(sub_element) / l if l > 0 else 0
    return something

print(Avg([1,[2,[3,[4,[5]]]]]))

产生 [1, 2.875].