如何在Python中添加列表列表中的所有项

如何在Python中添加列表列表中的所有项,python,recursion,nested-lists,Python,Recursion,Nested Lists,我试图做出一个定义,将列表中每个子列表中的所有数字相加 def MassAddition(_list): output = [] total = 0 for i in _list: if isinstance(i, list): output.append(MassAddition(i)) else: total = total + i output.append(total)

我试图做出一个定义,将列表中每个子列表中的所有数字相加

def MassAddition(_list):
    output = []
    total = 0
    for i in _list:
        if isinstance(i, list):
            output.append(MassAddition(i))
        else:
            total = total + i
    output.append(total)
    return output
问题是,它在末尾的列表中返回了一个额外的项。我认为这是因为我使total=0,然后将其附加到for循环之外的输出列表中。有人能帮我清理一下吗? 这个定义应该能够处理任何级别的嵌套列表

例如: 输入=[[0,1,2],[2,1,5],[2,2,2],2,2,1] 期望输出=[[3]、[8]、[6]、5]


谢谢,

您也可以检查其他号码的类型。如果它们只能是int:


只需执行:desiredOutput=mapsum,inputwo。真正地我不知道他是否存在。哈哈,谢谢!为什么不取出output.appendtotal并返回output,total?我不明白你的问题是什么。我在示例输入上运行了您的函数,它返回了所需的输出。if-total:output.appendtotalif列表按以下方式嵌套:[[1,2],[1],[2],[3,4]]。输出仍然包含嵌套列表-[[3]、[1]、[2]、[7]]。这就是OP想要的吗?@EpsilonX,我不确定,但如果不是,问题必须定义得更清楚。这意味着原始函数的问题不仅仅是像konrad所说的那样在列表的末尾返回一个额外的项。我认为主要的问题是,事实上,我们不知道OP想要什么。是的@保罗阿尔梅达也许两者都是问题所在??
def mass_addition(lst):
    output = []
    total = 0
    extra_flag = False
    for i in lst:
        if isinstance(i, list):
            output.append(mass_addition(i))
        elif isinstance(i, int):
            extra_flag = True
            total += i
    if extra_flag:
        output.append(total)
    return output