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操作Elasticsearch数据索引的教程
Apr 08 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
使用Python OpenCV为CNN增加图像样本的实现
Jun 10 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
Django REST framework 单元测试实例解析
Nov 07 Python
Python如何优雅获取本机IP方法
Nov 10 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
一篇文章弄懂Python中的内建函数
Aug 07 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
phpmyadmin操作流程
2006/10/09 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
php适配器模式简单应用示例
2019/10/23 PHP
jquery.validate使用攻略 第一部
2010/07/01 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
python 如何设置守护进程
2020/10/29 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
中学生综合素质自我评价
2015/03/06 职场文书