2017-04-20 80 views
0

的问题是这样的:Python的:把一系列的嵌套列表中的内容到一个列表

我有一系列的lists,总是包含两个items。这些items中的每一个都可以是string或其他列表。目标是找出如何使lists中的所有这些items出现在单个resultant_list中,并返回resultant_list

到目前为止我的代码看起来像(其中巢被剥离名单):

def strip(nest): 
    result_list=[] 
    for item in nest: 
     if type(item) is str: 
      result_list.append(item) 
     else: 
      return result_list + strip(item) 

我要去哪里错了吗?

+1

告诉我们*您的代码如何不起作用。 – timgeb

+0

我现在看到,return语句总是处于函数 – Jam

回答

2

如果returnelse块内,那么for循环可能会过早终止,并且您不会遍历每个元素。等到循环结束后再返回任何内容。

def strip(nest): 
    result_list=[] 
    for item in nest: 
     if type(item) is str: 
      result_list.append(item) 
     else: 
      result_list.extend(strip(item)) 
    return result_list 

而且,这可能不会引起你的具体情况下的错误,但是:这是一般最好使用isinstance测试一个对象的类型,而不是is。例如。 if isinstance(item, str):而不是if type(item) is str:

+3

的'结尾',或换句话说:OP代码的问题在于,他在它看到的第一个非字符串元素上递归地调用'strip',但从不检查以下要素。 – timgeb