我写了一个flatten函数,将嵌套列表转换为一个列表
def flatten(lst, new=[]):
for i in lst:
if type(i)==list:
flatten(i)
else:
new+=[i]
return new
我尝试使用相同的逻辑来创建一个函数,该函数将嵌套列表中的所有正数加起来。
def posSum(lst, Sum=0):
for i in lst:
if type(i)==list:
posSum(i)
else:
if i > 0:
Sum+=i
return Sum
返回0.为什么“new”变量在flatten中更新,但Sum在posSum中不会更新?我甚至在我的else子句中放了一个print语句,看看我是否可以打印出所有“i”,哪个有效。我尝试为posSum设置一个返回而不是仅仅调用它,但是它只计算第一个元素的总和,因为它打破了循环。我怎样才能在一个函数中解决这个问题,而不是将列表展平,然后浏览新列表?