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读取Android permission文件
Nov 01 Python
Python语言描述最大连续子序列和
Dec 05 Python
Python动态生成多维数组的方法示例
Aug 09 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
Python正则表达式和re库知识点总结
Feb 11 Python
Python socket 套接字实现通信详解
Aug 27 Python
python装饰器相当于函数的调用方式
Dec 27 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
初学者学习Python好还是Java好
May 26 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
Django 如何实现文件上传下载
Apr 08 Python
Python实现简单得递归下降Parser
May 02 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生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
python实现内存监控系统
2021/03/07 Python
python实现移位加密和解密
2019/03/22 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Python  Django 母版和继承解析
2019/08/09 Python
python判断元素是否存在的实例方法
2020/09/24 Python
python 实现aes256加密
2020/11/27 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
自荐信的五个重要部分
2013/10/29 职场文书
青春无悔演讲稿
2014/05/08 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
超级礼物观后感
2015/06/15 职场文书
现实表现证明材料
2015/06/19 职场文书
python脚本框架webpy的url映射详解
2021/11/20 Python
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸
我收到了德劲DE1107
2022/04/05 无线电