在不知道嵌套级别数量的情况下递归迭代到所有嵌套数组的最佳方法?



我正在使用python 3,我使用PyMongo。

PyMongo允许我像这样迭代数据库中的集合:

List['tomato',['apple',['carpet','dishwasher','mister T',[... etc.. etc..]],'coke'],'pie']

我目前正在使用最多 4 个级别的 for 循环。这很难维护和理解。

所以我想在所有嵌套数组中从第一个数组递归迭代到最后一个嵌套数组。

谢谢:)

裘德

如果您只是想扁平化列表,可以使用如下所示的函数递归它。每次它计数器嵌套列表时,它都会调用自己,并不断将元素保存到最终返回的结果列表中。

def recurse(in_list):
result=[]
for e in in_list:
if type(e)==list:
result+=recurse(e)
else:
result+=[e]
return result

创建函数后,您可以像这样使用它:

x=['tomato',['apple',['carpet','dishwasher','mister T'],'coke'],'pie']
recurse(x)

输出

['tomato', 'apple', 'carpet', 'dishwasher', 'mister T', 'coke', 'pie']

它只会处理嵌套列表,但您可以修改代码以处理其他类型的列表(字典、集合等(。

最新更新