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实现哈希表
Feb 07 Python
跟老齐学Python之传说中的函数编写条规
Oct 11 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
对python中类的继承与方法重写介绍
Jan 20 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
python文字转语音实现过程解析
Nov 12 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
Jun 28 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
Python析构函数__del__定义原理解析
Nov 20 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 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
DISCUZ 分页代码
2007/01/02 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
php实现文件下载代码分享
2014/08/19 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
阿里云:Aliyun.com
2017/02/15 全球购物
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
党员志愿者活动总结
2014/06/26 职场文书
运动会演讲稿50字
2014/08/25 职场文书
单位租车协议书
2015/01/29 职场文书
领导新年致辞2016
2015/07/29 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python