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中的魔法方法深入理解
Jul 09 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
Python画图学习入门教程
Jul 01 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
Python单元测试简单示例
Jul 03 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
python日期相关操作实例小结
Jun 24 Python
python tornado修改log输出方式
Nov 18 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 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
使用PHP获取网络文件的实现代码
2010/01/01 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
python动态加载变量示例分享
2014/02/17 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
Python中取整的几种方法小结
2017/01/06 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python中scikit-learn机器代码实例
2018/08/05 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
pygame实现五子棋游戏
2019/10/29 Python
解决Python二维数组赋值问题
2019/11/28 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
个人作风剖析材料
2014/02/02 职场文书
化工专业求职信
2014/07/01 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
货款欠条范本
2015/07/03 职场文书
二年级数学教学反思
2016/02/16 职场文书
委托书范本格式
2019/04/18 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android