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 相关文章推荐
PHP webshell检查工具 python实现代码
Sep 15 Python
python继承和抽象类的实现方法
Jan 14 Python
Python去除列表中重复元素的方法
Mar 20 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
Jun 11 Python
python中int与str互转方法
Jul 02 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 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 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
深入了解Node.js中的一些特性
2014/09/25 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
python实现指定字符串补全空格的方法
2015/04/30 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python变量和字符串详解
2017/04/29 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
解读python logging模块的使用方法
2018/04/17 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python SocketServer源码深入解读
2019/09/17 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
Python和Bash结合在一起的方法
2020/11/13 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
投标文件签署授权委托书范本
2014/10/12 职场文书
仓库管理制度范本
2015/08/04 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
JavaScript 原型与原型链详情
2021/11/02 Javascript
Spring Bean是如何初始化的详解
2022/03/22 Java/Android