Python:递归地展平列表

时间:2011-03-23 17:25:42

标签: python list recursion

  

可能重复:
  Flatten (an irregular) list of lists in Python

我有一个列表l = [2, 9, [1, 13], 8, 6],我需要递归展平以获得l = [2, 9, 1, 13, 8, 6]。我找不到办法。

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

1 个答案:

答案 0 :(得分: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

示例:

a = [2, 9, [1, 13], 8, 6]
list(flatten(a))
# [2, 9, 1, 13, 8, 6]

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