深度压缩一个列表

2019-05-24 16:47:38 浏览数 (1)

如果一个列表中的元素,有部分是列表。我们想把这样的一个列表,压缩成为一个单纯的列表,该怎么做呢?

代码语言:javascript复制
[1, [2], [[3], 4], 5]  =>  [1,2,3,4,5] #这是我们最终想要的结果

具体实现过程如下:

代码语言:javascript复制
def spread(arg):
    ret = []
    for i in arg:
        if isinstance(i, list):
            ret.extend(i)
        else:
            ret.append(i)
    return ret


def deep_flatten(lst):
    result = []
    result.extend(
        spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
    return result

调用函数输出结果:

代码语言:javascript复制
deep_flatten([1, [2], [[3], 4], 5]) 

如果你觉得对你有帮助,请分享给更多朋友,让他们一起受益。

0 人点赞