将嵌套列表元素重新附加到新列表

时间:2017-09-26 16:41:01

标签: python list recursion nested

下面的代码片段以递归方式将嵌套列表和元素展平为新列表,但无法将所有元素附加到列表中。

  

预期产出:[1,2,4,5,6,7,5,8]

     

我的输出:[1,2,8]

def foo(l): 
   result = []
   for i in l:
     if type(i)==list:
       foo(i)
     else:
       result.append(i)
return result


input_list = [1,2,[4,5,[6,7],5],8]

print (foo(input_list))

1 个答案:

答案 0 :(得分:5)

您正在重置每次通话中的result。将它传递到函数内部。

def foo(l,result): 
  for i in l:
   if isinstance(i,list):
     foo(i,result)
   else:
     result.append(i)
  return result


input_list = [1,2,[4,5,[6,7],5],8]
result=[]
print (foo(input_list,result))

输出:

[1, 2, 4, 5, 6, 7, 5, 8]