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脚本和ADB命令实现卸载App
Feb 10 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
python 实时调取摄像头的示例代码
Nov 25 Python
Django实现简单的分页功能
Feb 22 Python
使用Django框架创建项目
Jun 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
Python基础之函数用法实例详解
2014/09/10 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
python代码过长的换行方法
2018/07/19 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Python enumerate内置库用法解析
2020/02/24 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
党员检讨书
2014/10/13 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书