我希望使用递归和for循环的组合,使用函数summer(alist)
在一系列可能为空的嵌套列表中添加所有整数。到目前为止我的代码是:
**def summer(alist):**
total=0
print alist
for item in alist:
if type(item)==list:
print "The item is a list, containing: "+str(item)
return sum_nested_list(item)
elif type(item)==int:
print item
total = total + item
print "The total is: "+str(total)
return total
我的问题是例如list:
list1=[[0,[0,1,1]],[0,1],1]
我的结果如下:
[[0,[0,1,1]],[0,1],1]
The item is a list, containing: [0,[0,1,1]]
[0,[0,1,1]]
0
The item is a list, containing [0,1,1]
[0,1,1]
0
1
1
The total is: 2
2
如何让我的函数在整个列表而不仅仅是第一个双嵌套列表中进行递归?
答案 0 :(得分:3)
问题在于:
if type(item)==list:
print "The item is a list, containing: "+str(item)
return sum_nested_list(item)
因为return将结束for循环。您可以通过执行以下操作来解决此问题:
if type(item)==list:
print "The item is a list, containing: "+str(item)
total += sum_nested_list(item)