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

How to append a multiply nested list into and empty one?

我在书上看到过这段代码:

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]]] 并尝试使用我的函数,所有 return 都是 [1,2,3].

当您调用 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]