Python嵌套列表转一维的方法(压平嵌套列表)


Posted in Python onJuly 03, 2018

前一段去云英面试,技术官很”不厚道“了问了一个非常简单的问题:如何将多维列表转化了一维的?当时虽然想到了使用迭代或者列表生成式可以做到,但是可以没能可行的代码,回来后一顿后悔。

对于规范的且嵌套维度较低的多维列表,python中有很多方法可以实现:

a=[[1,2],[3,4],[5,6]]
print [j for i in li for j in i]
#or
from itertools import chain
print list(chain(*a))
#or
import itertools
a = [[1,2,3],[4,5,6], [7], [8,9]]
out = list(itertools.chain.from_iterable(a))
#or
a=[[1,2],[3,4],[5,6]]
t=[]
[t.extend(i) for i in a]
print t
#or
a=[[1,2],[3,4],[5,6]]
print sum(a,[])
#or
reduce(lambda x, y: x+ y, a)

对于复杂的多维嵌套列表就需要使用一些复杂的方法:

#递归的方法比较容易理解
def expand_list(nested_list):
  for item in nested_list:
    if isinstance(item, (list, tuple)):
      for sub_item in expand_list(item):
        yield sub_item
    else:
      yield item
      
#在stackoverflow看到大牛的列表生成式版本
func = lambda x: [y for l in x for y in func(l)] if type(x) is list else [x]
#生成式的方法还有很多,可以自行摸索

对于使用python2.X的童鞋,还可以使用flatten函数来做:

>>> d=[1,2,3,[4,5],[6,7,[8,9]]]
>>>from compiler.ast import flatten
>>>flatten(a)
[1, 2, 3, 4, 5, 6,7,8,9]

其实上边列举的方法仅仅是冰山一角,大海下的冰山就等这童鞋们自行去寻找挖掘了。

以上这篇Python嵌套列表转一维的方法(压平嵌套列表)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中字典和JSON互转操作实例
Jan 19 Python
python中split方法用法分析
Apr 17 Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
PyQt5每天必学之拖放事件
Aug 27 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
python实现飞船游戏的纵向移动
Apr 24 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
详解python内置模块urllib
Sep 09 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
Python 循环读取数据内存不足的解决方案
May 25 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 #Python
Pandas 同元素多列去重的实例
Jul 03 #Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 #Python
Python单元测试简单示例
Jul 03 #Python
Python3使用pandas模块读写excel操作示例
Jul 03 #Python
Python+pandas计算数据相关系数的实例
Jul 03 #Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 #Python
You might like
风格模板初级不完全修改教程
2006/10/09 PHP
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
PHP中for循环语句的几种变型
2007/03/16 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
Python Map 函数的使用
2020/08/28 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
社会保险接收函
2014/01/12 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
毕业横幅标语
2014/10/08 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
python 单机五子棋对战游戏
2022/04/28 Python