python 返回多重嵌套列表(多于两层嵌套)的元素

给定一个alist,alist里面可能包含单个元素或者其他list,alist的list里面可能还包含一个list
要求返回这些list里面所有元素

img

我的思路只能做到解开两次list,即第一个例子
如何才能在我这个思路的基础上解开更多层呢?

img

img


感谢!


alist = [[[3, 0], 1], 4, [5, 6, 7]]

def flatten(l):
    for i in l:
        if isinstance(i, list) :
            flatten(i)
        else:
            g.append(i)
            
g = []
flatten(alist)
print(g)