如何将多个嵌套列表附加到空的列表中?

时间:2015-01-07 10:58:45

标签: python python-3.x append

我在一本书中看到过这段代码:

def print_loop(items):
    for i in items: 
        if isinstance(i, list):
            print_loop(i)
        else:
            print(i)

这样做是打印出多重嵌套列表。任何乘法分层列表都可以很好地工作。

我想如果我们修改函数以便它只是将多重嵌套列表附加到空列表中。 以下是我改变它的方式:

def append_loop(items):
    func_items = []

    for i in items: 
        if isinstance(i, list):
            append_loop(i)
        else:
            func_items.append(i)
    return func_items

如果我有一个列表:items = [1,2,3 [4,5, [6,7]]] 并尝试使用我的函数,它返回的是[1,2,3]。

1 个答案:

答案 0 :(得分:1)

当您致电append_loop(i)时,这将返回一个展平列表。你必须对此做些什么,例如用它扩展func_items

>>> def append_loop(items):
...   func_items = []
...   for i in items:
...       if isinstance(i, list):
...           func_items.extend(append_loop(i))
...       else:
...           func_items.append(i)
...   return func_items
...
>>> append_loop([1,2,[3,[4,5]]])
[1, 2, 3, 4, 5]

否则,您可以使用global列表:

>>> global_func_items = []
>>> def append_loop2(items):
...   for i in items:
...       if isinstance(i, list):
...           append_loop2(i)
...       else:
...           global_func_items.append(i)
...
>>> append_loop2([1,2,[3,[4,5]]])
>>> print global_func_items
[1, 2, 3, 4, 5]