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标准库urllib2的一些使用细节总结
Mar 16 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
详解Python装饰器
Mar 25 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
python中count函数知识点浅析
Dec 17 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 Mssql操作简单封装支持存储过程
2009/12/11 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
Javascript - HTML的request类
2006/07/15 Javascript
javascript引用对象的方法
2007/01/11 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
python encode和decode的妙用
2009/09/02 Python
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
开业庆典邀请函
2014/01/08 职场文书
保证书格式范文
2014/04/28 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
成事在人观后感
2015/06/16 职场文书
酒店温馨提示语
2015/07/14 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
Go语言基础知识点介绍
2021/07/04 Golang
对象析构函数__del__在Python中何时使用
2022/03/22 Python
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js