在Python中的嵌套列表中列出项目

时间:2012-08-09 10:20:49

标签: python list recursion

  

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

我想要一个解决方案来列出/打印嵌套列表中的所有项目(具有任意嵌套级别)。以下是我提出的建议:

items = []
def getitems(mylist):
    for item in mylist:
        if type(item) is list:
            getitems(item)
        else:
            items.append(item)
    return items

示例输出:

foo=['foo','bar',['foo','bar','baz'],'spam',['ham','eggs','salami']]

In [8]: getitems(foo)
Out[8]: 
['foo',
 'bar',
 'foo',
 'bar',
 'foo',
 'bar',
 'baz',
 'spam',
 'ham',
 'eggs',
 'salami']

这是一个很好的解决方案吗?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

这可能有点迂腐,但您可以将累加器列表作为可选参数传递。这样你就没有任何全局变量,并且在你第二次调用函数时忘记清除它时避免了可能出现的问题:

def getitems(mylist, acc = None):
    if acc is None: acc = []
    for item in mylist:
        if type(item) is list:
            getitems(item, acc)
        else:
            acc.append(item)
    return acc