项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1. 嵌套list

python中嵌套的list还算比较常见的一种结构。比如我们经常用嵌套两层的list来模拟矩阵:

>>> matrix = [[1,2,3],[4,5,6],[7,8,9]]
>>> matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

很多时候我们想将这一个嵌套两层的list变成一个list,该怎么办呢?对于上面的例子,我们很容易找到如下的方式就可以满足需求:

def flatmatrix(matrix):result = []for i in range(len(matrix)):result.extend(matrix[i])print resultmatrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flatmatrix(matrix)

如果嵌套的list不是两层结构,而是任意的形式,上面的方式就不适用了。

2.递归打平嵌套list

比较容易想到的是递归的方式处理任意形式的嵌套list。我们取遍历原始的list,如果里面的元素是list则递归,如果不是加入结果中,直到原始list的所有元素遍历结束。具体代码如下:

def flat1(inputlist, result = None):if result is None:result = []for item in inputlist:if isinstance(item, list):flat1(item, result)else:result.append(item)return resultinputlist = ['it', 'is', ['a', ['test', 'of', ['circle', 'lists'], ','], 'please', 'like', ['it', 'and'], 'hello'], 'world']
print flat1(inputlist)

3.通过循环打平嵌套list

一般来说,递归的优势是简洁明了,容易理解。缺点则是需要递归栈,效率比较低。我们尝试用非递归的方式来实现。

def flat2(inputlist):result = []while inputlist:head = inputlist.pop(0)if isinstance(head, list):inputlist = head + inputlistelse:result.append(head)return resultinputlist = ['it', 'is', ['a', ['test', 'of', ['circle', 'lists'], ','], 'please', 'like', ['it', 'and'], 'hello'], 'world']
print flat2(inputlist)

循环的过程中,每次将输入list的首位元素取出来然后放到原来的位置,这样就起到了解开一层嵌套的作用,直到最后将所有的嵌套解开为止!

python打平处理嵌套list相关推荐

  1. Python 中异常嵌套

    Python 中异常嵌套 参考文章: (1)Python 中异常嵌套 (2)https://www.cnblogs.com/johnyang/p/10409153.html 备忘一下.

  2. python中类的嵌套_python类的嵌套

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 在.net和java语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的 ...

  3. 递归python首尾相同的子字符串_推荐Python语言多层嵌套list的递归处理方法

    本文主要向大家介绍了Python语言多层嵌套list的递归处理方法,希望对大家学习Python语言有所帮助. 问题:用Python处理一个多层嵌套list['and', 'B', ['not', 'A ...

  4. 【Python基础】嵌套 JSON 秒变 Dataframe!

    来源:Python数据科学 作者:东哥起飞 调用API和文档数据库会返回嵌套的JSON对象,当我们使用Python尝试将嵌套结构中的键转换为列时,数据加载到pandas中往往会得到如下结果: df = ...

  5. python关于字典嵌套字典,列表嵌套字典根据值进行排序

    python 对于字典嵌套字典, 列表嵌套字典排序 例:列表嵌套自字典:d = [{"name": '张三', 's': 68}, {'name': '李四', 's': 97}] ...

  6. python函数装饰嵌套_python3--函数名本质,函数嵌套,闭包,装饰器

    python函数的嵌套和作用域链 函数的嵌套调用def max2(x,y): m = x if x > y else y  # 三元运算 return m def max4(a,b,c,d): ...

  7. python if else 嵌套格式_python中if嵌套命令实例讲解

    一.嵌套命令计算机执行的顺序 缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令. 1.先给score赋值: 2.因为if和else是只能留一个的互斥关系,if和else下的代码 ...

  8. Python for循环嵌套用法

    Python 语言允许在一个循环体里面嵌入另一个循环. Python for 循环嵌套语法: for iterating_var in sequence:    for iterating_var i ...

  9. python 的循环嵌套

    python 的循环嵌套 循环嵌套介绍 嵌套语法如下: for 循环嵌套语法: while 循环嵌套语法: 例子如下 循环嵌套介绍 Python 语言允许在一个循环体里嵌套另一个循环(可以一层嵌套一层 ...

  10. python遍历多层嵌套列表_python遍历多层嵌套列表

    python 多层嵌套的json内容 怎么获取 如下,已经实现获取json中的指定内容,先在的问题是:有的json目标内容可以首先使用json包的loads函数对json数据进行解析,然后就可以像操作 ...

最新文章

  1. 腾讯的模板引擎---artTemplate
  2. javese 5 中的枚举类及单例模式
  3. 长沙,企业上市“再加速”
  4. 【源码品读】深入了解FeignContract协议解析过程
  5. java 命名内部类_如何把java SWT程序中的匿名内部类改写成命名内部类?
  6. 回车(CR)与换行(LF), '\r'和'\n'的区别
  7. 前端学习(1022):jquery学习目标
  8. linux远程连接最大数是多少,Linux Shell 脚本限制ssh最大用户登录数
  9. FLV audio tag
  10. Hibernate EHCache - Hibernate二级缓存
  11. Scala 函数式编程
  12. useEffect和useLayoutEffect区别
  13. 让你的CSS更尽完美的技巧
  14. JM8.6的解码端去方块滤波代码详述
  15. 思源黑体ttf_金刚黑体最粗版丨金刚黑体Bold+San Francisco
  16. smartPrinter安装报错
  17. 医学知识-骨密度以及骨密度测量
  18. 关于树莓派无法解析域名的错误
  19. 【Java-数据脱敏】使用Java对姓名、手机号码、证件号码进行数据脱敏
  20. 【数据分析干货】世界杯4强出炉!冠军将花落谁家?看看历年数据!

热门文章

  1. MySQL:Innodb表 Data free 的计算概要
  2. erlang 小程序:整数序列,搜索和为正的最长子序列
  3. activeMQ支持的四种协议简介及性能比较
  4. [转]Git使用基础篇
  5. C语言数据结构之图的邻接矩阵的应用实例
  6. day09 python之函数进阶
  7. AOP切面五大通知类型
  8. 知己知彼-关于Oracle安全比特币勒索问题揭秘和防范
  9. 浅谈Kotlin(四):控制流
  10. 2015 年 4 月份 LeanCloud 更新汇总