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过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
简述Python中的面向对象编程的概念
Apr 27 Python
bpython 功能强大的Python shell
Feb 16 Python
python中import reload __import__的区别详解
Oct 16 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
深入理解Django的中间件middleware
Mar 14 Python
python可视化实现代码
Jan 15 Python
Python中的asyncio代码详解
Jun 10 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
Django后端分离 使用element-ui文件上传方式
Jul 12 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 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
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
心扬JS分页函数代码
2010/09/10 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
高级销售求职信
2014/02/21 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
小学师德师风整改措施
2014/10/27 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
优秀志愿者感言
2015/08/01 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python