原题: https://segmentfault.com/q/1010000005904259

问题: 倘若存在 L=[ [1,2,3],[4,5,6],[7,8,9]] 这样的列表,如何把合并成[1,2,3,4,5,6,7,8,9]呢?

最直接的方法(By:松林)

ret = []
for x in L:
ret += x
print(x)

使用标准库中的itertools模块(By:dokelung)

from itertools import chain
lst = list(chain(*L))

这种方法由标准库提供,显然是更有效率,更加简洁的.

注: * 操作符是起到一个参数列表解包的作用

有没有一种更加Pythonic的方法,但又不使用标准库?

答案是当然有,我们可以利用 List Comprehension 这个python中非常好用的技巧

myList = [x for j in L for x in j]

总结

三个解决方法中,方法1是最直接的方案, 方法2利用了已有的标准库,一般情况有更好的效率.

方法3则是发挥Python的优点,毕竟Pythonic是每个Python程序员的目标,也是这个语言吸引人的地方.

其实发这篇文章主要是顺带安利下Python, 一段Pythonic的代码具有很好的观赏性, Python也提供了很多Pythonic的特性.

例如 上面提到的 LIst Comprehension 的方法来构造一个序列(列表,元组,字典), 其他语言要实现的话一般就要用lambda表达式,

个人而言是排斥lambda表达式的, 可读性方面它不如直接定义函数,而且也缺少对称性的优美.

再例如Python 的Slice(切片),也是一个很有用,很优美的技巧.

最经典的字符串反转, python可以这样写

s = "Hello, World!"
print(s[::-1]) # 具体解释可以看python文档,这里利用的是使步长为-1

间隔抽样可以这样写

L = [1,2,3,4,5........]
print(L[::3]) #3 为步进长度,可以取出1,4,7....

[Python]更加Pythonic的多个List合并和Python的安利的更多相关文章

  1. python 将列表里的字典元素合并为一个字典

    python 将列表里的字典元素合并为一个字典 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...

  2. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  3. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  4. 【Python从入门到精通】(九)Python中字符串的各种骚操作你已经烂熟于心了么?

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文将重点介绍Python字符串的各种常用方法,字符串是实际开发中经常用到的,所有熟练的掌握它的各种用法显得尤为重要. 干货满满,建议收藏,欢迎大 ...

  5. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  6. python成长之路【第一篇】:python简介和入门

    一.Python简介 Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言. 二.安装python windows: 1.下载安装包 https://www.pyt ...

  7. Python科学计算(一)环境简介——Anaconda Python

    Anaconda Python 是 Python 科学技术包的合集,功能和 Python(x,y) 类似.它是新起之秀,已更新多次了.包管理使用 conda,GUI基于 PySide,所有的包基本上都 ...

  8. 【Python千问 2】Python核心编程(第二版)-- 欢迎来到Python世界

    1.1 什么是Python 继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性. 1.2 起源 来源于某个项目,那些程序员利用手边现有的工具辛苦工作着,他们设想并开发了更好的解 ...

  9. 【python】坑,坑,折腾一个下午python 3.5中 ImportError: No module named BeautifulSoup

    将语句 from bs4 import BeautifulSoup4 改成 from bs4 import BeautifulSoup 通过 尼玛------------------------! 总 ...

随机推荐

  1. Java Web系列:Spring依赖注入基础

    一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...

  2. tabhost中activity跳转动画不显示的解决办法

    [1]如果是tabhost中的activity跳到其他的activity,用这篇blog的方法即可 http://blog.sina.com.cn/s/blog_8db8914301010t31.ht ...

  3. SpringMVC存取Session的两种方法 转

    方法一:使用servlet-api @Controller public class ManagerController { @Resource private ManagerService mana ...

  4. hadoop单线程实现server多socket连接读取数据原理分析

    一.问题引出. Hadoop 的Server 采用了Java 的NIO,这样的话就仅需要为每一个socket 连接建立一个线程,读取socket 上的数据.在Server 中,只需要一个线程,就可以a ...

  5. AIX操作oracle

    oracle:出现下述错误,无法连接用户. ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist ...

  6. 系统调用和中断处理的异同(以Linux MIPS为例)

    在Linux下写一个驱动时候遇到的读操作性能问题,让我想一窥系统调用的处理流程,以查出问题的root cause.很多书把它和中断处理放在一起讲,但是又没有哪本书说清楚了,看来只有代码才能说明一切.以 ...

  7. Building Tomcat7 source step by step---官方文档

    Table of Contents Introduction Download a Java Development Kit (JDK) version 6 Install Apache Ant 1. ...

  8. IsPostBack and DropdownList.

    Encounted the issue accident when helping my classmate dealing with his homework assignment,it turns ...

  9. 非常不错的ASP操作数据库类,支持多数据库MSSQL,ACCESS,ORACLE,MYSQL等

    可同时操作多个不同类型的数据库. 完全不用考虑数据类型的差别,再也不用想字符型字段加不加单引号. 调用非常简单,对数据库的主要操作一般只需要一行代码. 支持mssql事务回滚. 可自动生成和输出sql ...

  10. mysql出现的错误

    (一)ERROR 1005 (HY000): Can't create table '.\day19\user_role.frm' (errno: 121) 今天遇到的这个问题是因为创建了五张表,其中 ...