ylhhh 发表于 2022-3-5 00:49:26

不超过5层的嵌套列表求列表元素加权和

【问题描述】

输入一个嵌套列表,嵌套层次不超过5层,根据层次,求列表元素的加权和,权是指元素在嵌套列表中的层次。第一层每个元素的权值为:元素值*1,第二层每个元素的权值为:元素值*2,第三层每个元素的权值为:元素值*3, ...,依此类推!


【输入形式】

按照列表的形式输入,每个元素是一个整数
【输出形式】

整数
【样例输入】

,7],8]

【样例输出】

72

【样例说明】

元素1,2,8是列表的第一层,所以其权是1。3,4,7 处于列表的第二层,其权是2。5,6处于列表的第三层,其权是3。所以列表元素的加权和为:

(1+2+8)*1+(3+4+7)*2+(5+6)*3=72

elven08 发表于 2022-3-5 02:38:19

递归就可以解决
def f_ist(nl,j):
    global b
    j =j+1
    for i in nl:
      if type(i) is int:
            b = b + i*j
            #print(i,j,b)#去掉注释可以看见计算过程
      elif type(i) is list:
            f_ist(i,j)
    return(b)

a =, 7], 8]
b = 0
print(f_ist(a,0))

elven08 发表于 2022-3-5 02:39:59

elven08 发表于 2022-3-5 02:38
递归就可以解决

这个是计算过程和结果。

傻眼貓咪 发表于 2022-3-5 09:14:19

def func(arr, level = 1):
        res = 0
        for each in arr:
                if type(each) == int:
                        res += each*level
                else:
                        res += func(each, level + 1)
        return res

arr = , 7], 8]

print(func(arr))72

ylhhh 发表于 2022-3-5 12:25:05

elven08 发表于 2022-3-5 02:38
递归就可以解决

谢谢大佬

ylhhh 发表于 2022-3-5 12:25:37

傻眼貓咪 发表于 2022-3-5 09:14


谢谢大佬
页: [1]
查看完整版本: 不超过5层的嵌套列表求列表元素加权和