Python多层嵌套list的递归处理方法(推荐)


Posted in Python onJune 08, 2016

问题:用Python处理一个多层嵌套list

['and', 'B', ['not', 'A'],[1,2,1,[2,1],[1,1,[2,2,1]]], ['not', 'A', 'A'],['or', 'A', 'B' ,'A'] , 'B']

需求1)如何展开成一层?

需求2)如何删除重复的元素? 包括重复的list, 要考虑子list的重复元素删除后造成的子list重复

#!/usr/bin/env python
# -*- coding: utf-8 -*-


def unilist(ll):
  
  """
  功能:用递归方法删除多层列表中重复元素
  """
  
  result = []
  for i in ll:
    if isinstance(i, list):
      if unilist(i) not in result:
        result.append(unilist(i))
    else:
      if i not in result:
        result.append(i)
  return result


def flatten(ll):
  """
  功能:用递归方法展开多层列表,以生成器方式输出
  """
  if isinstance(ll, list):
    for i in ll:
      for element in flatten(i):
        yield element
  else:
    yield ll


testcase= ['and', 'B', ['not', 'A'],[1,2,1,[2,1],[1,1,[2,2,1]]], ['not', 'A', 'A'],['or', 'A', 'B' ,'A'] , 'B']

print unilist(testcase)

print list(flatten(testcase))

运行结果

['and', 'B', ['not', 'A'], [1, 2, [2, 1], [1, [2, 1]]], ['or', 'A', 'B']]

['and', 'B', 'not', 'A', 1, 2, 1, 2, 1, 1, 1, 2, 2, 1, 'not', 'A', 'A', 'or', 'A', 'B', 'A', 'B']

以上这篇Python多层嵌套list的递归处理方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python下载指定页面上图片的方法
May 12 Python
利用Python爬取可用的代理IP
Aug 18 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
Djang的model创建的字段和参数详解
Jul 27 Python
深入了解python中元类的相关知识
Aug 29 Python
基于python调用psutil模块过程解析
Dec 20 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
python数据预处理方式 :数据降维
Feb 24 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
python删除csv文件的行列
Apr 06 Python
Python-嵌套列表list的全面解析
Jun 08 #Python
PYTHON压平嵌套列表的简单实现
Jun 08 #Python
Python用Bottle轻量级框架进行Web开发
Jun 08 #Python
浅谈Python数据类型之间的转换
Jun 08 #Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 #Python
Python while 循环使用的简单实例
Jun 08 #Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 #Python
You might like
解析php常用image图像函数集
2013/06/24 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python实现简单登录验证
2016/04/13 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
python实现简易动态时钟
2018/11/19 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
linux 下selenium chrome使用详解
2020/04/02 Python
python实现人脸签到系统
2020/04/13 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
Linux上比较文件的命令都有哪些
2012/02/24 面试题
先进个人获奖感言
2014/01/24 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
品酒会策划方案
2014/05/26 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
专家推荐信怎么写
2015/03/25 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书