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实现一个简单的银行转账操作
Mar 06 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
Python对wav文件的重采样实例
Feb 25 Python
Django实现前台上传并显示图片功能
May 29 Python
python批量生成条形码的示例
Oct 10 Python
Python绘制散乱的点构成的图的方法
Apr 21 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(5) 类和对象
2010/02/16 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP查询快递信息的方法
2015/03/07 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
javascript中this的四种用法
2015/05/11 Javascript
jquery自定义表格样式
2015/11/23 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
Python将string转换到float的实例方法
2019/07/29 Python
python模拟斗地主发牌
2020/04/22 Python
extern是什么意思
2016/03/10 面试题
北京振戎融通Java面试题
2015/09/03 面试题
购房意向书
2014/04/01 职场文书
交通事故调解协议书
2014/04/16 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
《雷雨》教学反思
2016/02/20 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
我去timi了,一起去timi是什么意思?
2022/04/13 杂记