一尘不染

在Python中展平任意嵌套列表的最快方法是什么?

algorithm

我之前找到了解决方案,但是我想知道最快的解决方案是将包含任意长度的其他列表的列表展平。

例如:

[1, 2, [3, 4, [5],[]], [6]]

会成为:

[1,2,3,4,5,6]

可以有无限多个级别。一些列表对象可以是字符串,不能在输出列表中将其展平为它们的顺序字符。


阅读 218

收藏
2020-07-28

共1个答案

一尘不染

这是一种字符串友好的递归方法:

nests = [1, 2, [3, 4, [5],['hi']], [6, [[[7, 'hello']]]]]

def flatten(container):
    for i in container:
        if isinstance(i, (list,tuple)):
            for j in flatten(i):
                yield j
        else:
            yield i

print list(flatten(nests))

返回:

[1, 2, 3, 4, 5, 'hi', 6, 7, 'hello']

请注意,这不能保证速度或开销,但可以说明递归解决方案,希望对您有所帮助。

2020-07-28