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

Rav*_*avi 0 python recursion nested list

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

预期产量:[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))
Run Code Online (Sandbox Code Playgroud)

Rah*_*rma 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))
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 2, 4, 5, 6, 7, 5, 8]
Run Code Online (Sandbox Code Playgroud)