在不使用itertools的情况下查找嵌套列表的总和

时间:2013-03-14 15:42:51

标签: python list

a = [[1,2,3],[4,1],[2,2,6],[3]]

将打印24的总和

我知道单个列表,例如[1,2,3]我可以sum(a),但我正在努力使用嵌套列表。

谢谢。

2 个答案:

答案 0 :(得分:6)

这不会创建新的临时列表:

sum(sum(b) for b in a)

答案 1 :(得分:3)

sum(sum(a, []))

内部总和将所有单个列表组合成一个列表。然后外部总和找到实际总和。

对于嵌套多个深度的列表,您可以使用:

def recursiveSum(data):
    try:
        total = 0
        for item in data:
            total += recursiveSum(item)
        return total
    except TypeError: #data isn't iterable, it's probably a number
        return data

print recursiveSum([[[[1,2,3],[4,1]],[2,2,6]],3])

输出:

24