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下Fabric的简单部署方法
Jul 14 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
python定位xpath 节点位置的方法
Aug 27 Python
用python实现学生管理系统
Jul 24 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
如何使用python写截屏小工具
Sep 29 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
python UDF 实现对csv批量md5加密操作
Jan 01 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
python 模块重载的五种方法
Apr 24 Python
怎么用Python识别手势数字
Jun 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
基于mysql的论坛(1)
2006/10/09 PHP
PHP中PDO基础教程 入门级
2011/09/04 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
Python快速从注释生成文档的方法
2016/12/26 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
Python如何生成xml文件
2020/06/04 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
售后服务经理岗位职责范本
2014/02/22 职场文书
社区党建工作方案
2014/06/10 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
实习工作表现评语
2014/12/31 职场文书
2015初中政教处工作总结
2015/07/21 职场文书