2017-09-26 116 views
0

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

预期输出:[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)) 

回答

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] 
+0

Upvoted;我还建议使用'isinstance'来检查类型 – Bahrom

+0

@Bahrom:是的。我编辑了答案。 – batMan

+0

谢谢你的工作.... :) – Ravi

相关问题