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实现的HTTP并发测试完整示例
Apr 23 Python
python PyTorch预训练示例
Feb 11 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python实现矩阵打印
Mar 02 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
django使用admin站点上传图片的实例
Jul 28 Python
在django中自定义字段Field详解
Dec 03 Python
关于Python中定制类的比较运算实例
Dec 19 Python
PyTorch中反卷积的用法详解
Dec 30 Python
python如何处理程序无法打开
Jun 16 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写的带缓存数据功能的mysqli类
2012/09/06 PHP
将时间以距今多久的形式表示,PHP,js双版本
2012/09/25 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
php加密解密实用类分享
2014/01/07 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
Python实现截屏的函数
2015/07/25 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
python zip()函数使用方法解析
2019/10/31 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
中学教师教育感言
2014/02/21 职场文书
cf收人广告词大全
2014/03/14 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
企业消防安全责任书
2014/07/23 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL