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 15 Python
python学习笔记:字典的使用示例详解
Jun 13 Python
python中base64加密解密方法实例分析
May 16 Python
python抓取最新博客内容并生成Rss
May 17 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
django 简单实现登录验证给你
Nov 06 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
python实现无边框进度条的实例代码
Dec 30 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
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
TensorFlow实现模型评估
2018/09/07 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Python二维码生成识别实例详解
2019/07/16 Python
Django中URL的参数传递的实现
2019/08/04 Python
python 三元运算符使用解析
2019/09/16 Python
python super的使用方法及实例详解
2019/09/25 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
门卫人员岗位职责
2013/12/24 职场文书
公司前台辞职报告
2014/01/19 职场文书
企业指导教师评语
2014/04/28 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
幼师求职自荐信
2015/03/26 职场文书
机关工会工作总结2015
2015/05/26 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
一文弄懂MySQL索引创建原则
2022/02/28 MySQL
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers