具有递归的Python中多维数组的总和

时间:2018-11-18 11:50:05

标签: python python-3.x

我想在Python中使用递归对多维数组中的数字求和:

tab = [7, 5, [3, 6, [2]], 7, [1, [2, 3, [4]], 9, 2], 4]

我尝试了一些事情,例如:

sum(map(sum, tab))

它适用于简单的数组,例如[[1, 2], [3, 4]],但不适用于最上方的那个。我收到此错误:

  

TypeError:“ int”对象不可迭代

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

一种方法:

tab = [7, 5, [3, 6, [2]], 7, [1, [2, 3, [4]], 9, 2], 4]

def r_sum(tab):
    return sum(r_sum(item) if isinstance(item, list) else item for item in tab)

r_sum(tab)
# 55

答案 1 :(得分:3)

您可以使用以下递归算法:

tab = [7, 5, [3, 6, [2]], 7, [1, [2, 3, [4]], 9, 2], 4]

def sumLst(l):
    sum = 0
    for ele in l:
        if type(ele) in [float, int]:
            sum += ele
        else:
            sum += sumLst(ele)
    return sum
print(sumLst(tab))