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实现子类调用父类的方法
Nov 10 Python
10款最好的Web开发的 Python 框架
Mar 18 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
pymongo中聚合查询的使用方法
Mar 22 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
python中sympy库求常微分方程的用法
Apr 28 Python
python定时截屏实现
Nov 02 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 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
杏林同学录(八)
2006/10/09 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php控制文件下载速度的方法
2015/03/24 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
vue实现购物车案例
2020/05/30 Javascript
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
Django choices下拉列表绑定实例
2020/03/13 Python
关键字final的用法
2013/10/02 面试题
中学教师实习自我鉴定
2013/09/28 职场文书
顶撞老师检讨书
2014/02/07 职场文书
一夜的工作教学反思
2014/02/08 职场文书
致800米运动员广播稿
2014/02/16 职场文书
法院个人总结
2015/03/03 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
七年级英语教学反思
2016/02/15 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS