Python:递归地展平列表

Dha*_*mit 0 python recursion list

可能重复:
在Python中展平(不规则)列表

我有一个列表l = [2, 9, [1, 13], 8, 6],我需要递归展平才能获得l = [2, 9, 1, 13, 8, 6].我找不到办法这样做.

PS - 在撰写本文时,我在相关问题列表中找不到与我的疑问相符的任何问题.所以,如果这是重复的,那么请指出我的问题,而不是燃烧我.:)

Sve*_*ach 6

如果你想展平任意嵌套的iterables,你可以尝试这个函数:

def flatten(x):
    try:
        it = iter(x)
    except TypeError:
        yield x
    else:
        for i in it:
            for j in flatten(i):
                yield j
Run Code Online (Sandbox Code Playgroud)

例:

a = [2, 9, [1, 13], 8, 6]
list(flatten(a))
# [2, 9, 1, 13, 8, 6]
Run Code Online (Sandbox Code Playgroud)

请注意,该函数还会将字符串展平为单个字符.