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系列之从文件读取和保存数据
May 23 Python
python命令行参数解析OptionParser类用法实例
Oct 09 Python
Python实现计算最小编辑距离
Mar 17 Python
python中学习K-Means和图片压缩
Nov 20 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
详解Python3 pickle模块用法
Sep 16 Python
python绘制雪景图
Dec 16 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Python自动化测试中yaml文件读取操作
Aug 20 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 组件化编程技巧
2009/06/06 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
关于原生js中bind函数的简单实现
2016/08/10 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
python如何快速拼接字符串
2020/10/28 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
打架检讨书400字
2014/01/17 职场文书
运动会方阵口号
2014/06/07 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
详解NodeJS模块化
2021/06/15 NodeJs
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis