我想要一个解决方案来列出/打印嵌套列表中的所有项目(具有任意嵌套级别)。以下是我提出的建议:
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']
这是一个很好的解决方案吗?或者有更好的方法吗?
答案 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