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

标签 python algorithm iteration

我使用的是 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']

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

关于python - 在不知道嵌套级别数的情况下递归迭代到所有嵌套数组的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464599/

相关文章:

arrays - 二维二进制矩阵中最大的 1 矩形

javascript - 使用 Jade 迭代内部页面脚本

java - 更改 Map 的迭代顺序

python - 子目录中的 Django - 管理站点不工作

python - 如何在Python中的图像上设置水印文本

Python:将静态方法分配给类变量会出错

string - KMP模式匹配算法的时间复杂度可以是O(m*n)?

javascript - Leetcode 上的组合和 III

java - Spring Batch - 了解 block 大小和 ItemReadListener 之间的行为

python - 如何合并具有重复值的字典列表以创建嵌套字典?