多层嵌套可迭代列表的剥皮函数

python中很多时候可能会遇到多层嵌套可迭代列表如下:

成都创新互联主要从事成都网站设计、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务延庆,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

   list1 = [11, 22, [33, 44, [55, 66]]]
   list2 = [11, 22, [33, 44]]

其中我们想要的结果只是一个所有的结果列表而已.此时就需要一个剥皮函数,把嵌套的元素全部剥离出来,放入一个列表中(递归实现).
实现函数如下:

  def f(x, ret=None):
        # 把上一次的结果传递过来
        if not ret:
                ret = []
        for i in x:
                if isinstance(i, list):
                        # 如果i为列表,则返回继续处理,且把现在的处理结果传递回去
                        f(i, ret)
                    else:
                        ret.append(i)
            # 最终返回所有的元素
            return ret   

第二种方法:

# 第二种方法
def f2(x):
    ret = []
    for m in x:
        if isinstance(m, list):
                    # 进行递归剥皮将列表挨个递归添加到ret列表中
                        # 因为f2函数最终返回的是一个列表,所以不管多少层f2(m)将始终是一个列表
                        # 循环将元素加入ret列表中
            for n in f2(m):
                ret.append(n)
        else:
            ret.append(m)
    return ret

分享文章:多层嵌套可迭代列表的剥皮函数
URL标题:http://csruizhi.cn/article/pgpeee.html

其他资讯

Copyright © 2007-2024 成都优众联杰科技有限公司 All Rights Reserved 蜀ICP备2024116266号
友情链接: 成都网站建设 成都网站建设公司 重庆外贸网站建设 成都网站设计 重庆网站制作 成都营销网站制作 泸州网站建设 教育网站设计方案 手机网站设计 梓潼网站设计 成都企业网站制作 重庆企业网站建设 定制网站设计 成都定制网站建设 响应式网站设计 网站设计 成都网站建设 手机网站建设套餐 营销网站建设 成都模版网站建设 成都网站建设 定制网站建设