Python:将一系列嵌套列表的内容放入单个列表中

时间:2017-04-20 15:57:29

标签: python list recursion

问题是这样的:

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

到目前为止我的代码看起来像(其中nest是要剥离的列表):

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 个答案:

答案 0 :(得分:2)

如果您在return块中else,那么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: