如何在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