python list元素合并_Python程序中使用表达式合并List列表元素 - Python - 服务器之家...
Python程序中使用表达式合并List列表元素
发布时间:2014-02-06
来源:服务器之家
在实现一个产品过程中,使用 Python Extension 需要一个语句将一个列表中子列表合并成为一个新的列表,譬如:
原始列表为 [ 1, [2, 3], 4, [5, 6], 7 ],
需要使用一个表达式合并成为 [1, 2, 3, 4, 5, 6, 7]
经过多方组合,终于找到一个方式,使用 lambda 和 reduce 来实现:
reduce(lambda x, y: x.extend(y) or x, [ i if isinstance(i, list)
else [i] for i in [0, 1, [2,3], 4]])
语句分析:
[ i if isinstance(i, list) else [i] for i in [0, 1, [2,3], 4]]
首先将列表转换成为元素全部为列表类型,执行结果如下
[ [0], [1], [2,3], [4] ]
lambda x, y: (x.extend(y) or x) 语句的作用是把列表 y 中元素追加到列表 x 中,并返回 x
的值。因为列表的 extend 方法返回的总是 None,所以这里使用 or 来返回第二个表达式的值。
reduce 函数是针对列表中所有元素,依次使用前面的 lambda 进行合并,最后输出一个列表。
组合成为上面的一个表达式,就实现了需要的功能。
约束:这个表达式只能展开一层子列表,对多层列表([ [ [1] ], 2]) 不适用。
补充:如何想要过滤重复的元素,在增加一个 set 调用即可,也就是
set(reduce(lambda x, y: x.extend(y) or x, [ i if isinstance(i,
list) else [i] for i in [0, 1, [2,3], 4]]))
如果还是想返回一个 list 类型,在增加一个 list 调用进行转换
list(set(reduce(lambda x, y: x.extend(y) or x, [ i if
isinstance(i, list) else [i] for i in [0, 1, [2,3], 4]])))
python list元素合并_Python程序中使用表达式合并List列表元素 - Python - 服务器之家...相关推荐
- python调用java文件_Python程序中调用Java代码的实践
1.环境准备 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码 ...
- python卸载错误_卸载python后导致yum无法使用的解决办法 - Python - 服务器之家
卸载python后导致yum无法使用的解决办法 发布时间:2014-08-03 来源:服务器之家 由于服务器需要升级python,参照了一篇坑爹的文章卸载了旧版python # 卸载旧的python ...
- python 二进制流转图片_Python零基础入门到精通-5.1节:Python程序的执行过程
教程引言: 系统地讲解计算机基础知识,Python的基础知识, 高级知识,web开发框架,爬虫开发,数据结构与算法,nginx, 系统架构.一步步地帮助你从入门到就业. 5.1.1 在命令行中执行Py ...
- python如何在网络爬虫程序中使用多线程(threading.Thread)
python如何在网络爬虫程序中使用多线程 一.多线程的基础知识 二.在网络爬虫中使用多线程 2.1 从单线程版本入手 2.2 将单线程版本改写为多线程版本 2.3 运行多线程版本程序 2.4 将多线 ...
- python怎么保存源代码_python程序如何进行保存
保存Python程序,可以使用以下方法:使用编辑器编写代码并保存 1.打开Notepad++ 2.需要新建文本时,点击左上角"文本",在弹出的菜单栏点击"新建" ...
- python读取二进制文件_python读取二进制流 Python二进制方式读写文件 - 电脑常识 - 服务器之家...
python读取二进制流 Python二进制方式读写文件 发布时间:2017-03-18 来源:服务器之家 这两天用Python解析ELF二进制文件,遇到了不少问题,总结整理如下,以便加深对Pytho ...
- python 加权随机算法_python的random模块及加权随机算法的python实现方法
random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. •random.seed(x)改变随机数生成器的种子seed. 一般不必特别去设定seed,Python会自动选择seed. ...
- python自动交易脚本_python交易库 Python自动化交易 - 网银支付 - 服务器之家
python交易库 Python自动化交易 发布时间:2017-04-06 来源:服务器之家 大家好,今天我们来讨论一下如何用python来做一个简单的自动化交易程序. 在讨论具体的技术前,我要先声明 ...
- python硬件库网址_python dev安装包 Python安装第三方库 - 硬件设备 - 服务器之家
python dev安装包 Python安装第三方库 发布时间:2017-05-10 来源:服务器之家 Ubuntu 12.04 LTS 默认安装Python 2.7.3,没有安装python-dev ...
最新文章
- 学 Python 必看书单汇总
- python批量读取文本行_用Python读取几十万行文本数据
- java中如何限制输入非空_项目中的参数限制、非空、以及集合中的验证,你真的会做吗(Java)...
- MySQL建表,DML,DDL,约束,外键策略
- apache shiro_Apache Shiro第2部分–领域,数据库和PGP证书
- Java多线程与并发系列从0到1全部合集,强烈建议收藏!
- hdu 3105 Fred's Lotto Tickets (水)
- nginx与php处理用户请求,配置 NGINX 处理 PHP 的请求《 LEMP 网站应用运行环境 》
- selenium环境搭建,浏览器驱动安装
- java常用string inputStream转换
- harmonyOS应用开发环境搭建
- 抖音seo排名优化技术工具源代码
- Python实现文件搜索
- 2014年牡丹江现场赛打铁记
- 构建单拷贝同源蛋白系统发育树,一条命令提序列!
- 计算机毕业设计Java服装定制管理系统(源码+系统+mysql数据库+lw文档)
- GStreamer教程-基础教程2:GStreamer概念
- 会讲话是学问,会听话是学问
- 【解决方案】IDEA 配合 gradle 时候无法正确编译资源文件resources的问题
- TWaver自动化设计平台Legolas —— 交互事件响应动作