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 - 服务器之家...相关推荐

  1. python调用java文件_Python程序中调用Java代码的实践

    1.环境准备 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码 ...

  2. python卸载错误_卸载python后导致yum无法使用的解决办法 - Python - 服务器之家

    卸载python后导致yum无法使用的解决办法 发布时间:2014-08-03 来源:服务器之家 由于服务器需要升级python,参照了一篇坑爹的文章卸载了旧版python # 卸载旧的python ...

  3. python 二进制流转图片_Python零基础入门到精通-5.1节:Python程序的执行过程

    教程引言: 系统地讲解计算机基础知识,Python的基础知识, 高级知识,web开发框架,爬虫开发,数据结构与算法,nginx, 系统架构.一步步地帮助你从入门到就业. 5.1.1 在命令行中执行Py ...

  4. python如何在网络爬虫程序中使用多线程(threading.Thread)

    python如何在网络爬虫程序中使用多线程 一.多线程的基础知识 二.在网络爬虫中使用多线程 2.1 从单线程版本入手 2.2 将单线程版本改写为多线程版本 2.3 运行多线程版本程序 2.4 将多线 ...

  5. python怎么保存源代码_python程序如何进行保存

    保存Python程序,可以使用以下方法:使用编辑器编写代码并保存 1.打开Notepad++ 2.需要新建文本时,点击左上角"文本",在弹出的菜单栏点击"新建" ...

  6. python读取二进制文件_python读取二进制流 Python二进制方式读写文件 - 电脑常识 - 服务器之家...

    python读取二进制流 Python二进制方式读写文件 发布时间:2017-03-18 来源:服务器之家 这两天用Python解析ELF二进制文件,遇到了不少问题,总结整理如下,以便加深对Pytho ...

  7. python 加权随机算法_python的random模块及加权随机算法的python实现方法

    random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. •random.seed(x)改变随机数生成器的种子seed. 一般不必特别去设定seed,Python会自动选择seed. ...

  8. python自动交易脚本_python交易库 Python自动化交易 - 网银支付 - 服务器之家

    python交易库 Python自动化交易 发布时间:2017-04-06 来源:服务器之家 大家好,今天我们来讨论一下如何用python来做一个简单的自动化交易程序. 在讨论具体的技术前,我要先声明 ...

  9. python硬件库网址_python dev安装包 Python安装第三方库 - 硬件设备 - 服务器之家

    python dev安装包 Python安装第三方库 发布时间:2017-05-10 来源:服务器之家 Ubuntu 12.04 LTS 默认安装Python 2.7.3,没有安装python-dev ...

最新文章

  1. 学 Python 必看书单汇总
  2. python批量读取文本行_用Python读取几十万行文本数据
  3. java中如何限制输入非空_项目中的参数限制、非空、以及集合中的验证,你真的会做吗(Java)...
  4. MySQL建表,DML,DDL,约束,外键策略
  5. apache shiro_Apache Shiro第2部分–领域,数据库和PGP证书
  6. Java多线程与并发系列从0到1全部合集,强烈建议收藏!
  7. hdu 3105 Fred's Lotto Tickets (水)
  8. nginx与php处理用户请求,配置 NGINX 处理 PHP 的请求《 LEMP 网站应用运行环境 》
  9. selenium环境搭建,浏览器驱动安装
  10. java常用string inputStream转换
  11. harmonyOS应用开发环境搭建
  12. 抖音seo排名优化技术工具源代码
  13. Python实现文件搜索
  14. 2014年牡丹江现场赛打铁记
  15. 构建单拷贝同源蛋白系统发育树,一条命令提序列!
  16. 计算机毕业设计Java服装定制管理系统(源码+系统+mysql数据库+lw文档)
  17. GStreamer教程-基础教程2:GStreamer概念
  18. 会讲话是学问,会听话是学问
  19. 【解决方案】IDEA 配合 gradle 时候无法正确编译资源文件resources的问题
  20. TWaver自动化设计平台Legolas —— 交互事件响应动作

热门文章

  1. CentOS7 部署 Maxwell
  2. Arduino环境下ESP32另外的下载方式(用USB转TTL连接TX0和RX0下载)
  3. 如何进行社群运营的搭建和管理
  4. 全球与中国佐米曲普坦鼻喷雾剂市场深度研究分析报告
  5. 关于在winform使用iwebpdf遇到问题
  6. Visio哪个版本好用?有哪些版本
  7. 【动画消消乐】HTML+CSS 自定义加载动画 068
  8. Celery异步任务重复执行(Redis as broker)
  9. 计算机毕业设计论文_Java项目校园快递管理系统|物流
  10. Adversarial Detection methods