[Python]更加Pythonic的多个List合并和Python的安利

原题: 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....
时间: 2024-11-06 22:03:50

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

python学习-windows下使用python27将合并多个xlsx文件

有时候需要处理很多报表,将一个目录下的所有excel格式报表合并,手工操作费事费力如果能使用python,将多个.xlsx同时能够合并多个excel表的话,多么方便. 1.windows上python配置 windows上安装的是python2.7,需要使用pip安装一些第三方包,所以需要配置一下.在linux上修改Pip源很简单,但是在windows上很麻烦,所以我就直接单次指定pip源下载包 #windows上pip执行路径为C:\Python27\Scripts pip install -

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.

python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )

<python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )>http://blog.csdn.net/lainegates/article/details/19565823 目前有很多开源的Python/c++ 绑定工具,搜了好多岾子,这里稍微总结下. SWIG 支持 Python 2 and 3 配置正确的话,可以全自动完成封装(*.i文件需要自己写) 当不是全自动的时候,它大多会重复你的.h文件并给出提示 除了P

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取 一.实验环境: Python2.7.10.pycharm.VM虚拟机.CentOS6.3.mysql 二.MySQLdb模块: MySQLdb模式是Python中专门连接MySQL数据库的模块,另外Python开发环境的搭

Python学习(一):入门篇:python中的一些数据结构

Python里的一些基本知识点总结 Last Edit 2014/5/2 这里记录的是Python2.7版本的语法特征,部分与Python3.0是不一样的. 一,关于开发环境 在windows下可以直接在官网下载相关的版本,然后默认安装.使用直带的IDLE编辑器. IDLE中两个有用的快捷键: ALT+P:重复历史命令(从最近到最老) ALT+N:   重复历史命令(从最老到最近) IDLE中没有清屏功能. 在cmd中进行: 1,首先要在环境变量的path中添加相关的路径: C:\Python2

Python学习总结【第01节】:Python简介

Python创始人:Guido von Rossum(龟叔) Python编写1989年 ,正式诞生于1991年 Python官方网:www.python.org Python版本:python 2.x和python 3.x Python应用 Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前Python主要应用领域:1).云计算: 云计算最火的语言, 典型应用OpenStack2).WEB开发: 众多优秀的WEB框架,众多大型网站均为

Python 3.4.4 学习笔记(004)python manuals/the python tutorial -- 3. An Informal Introduction to Python

可以看到python版本号变了,找到一本学习python的书,Mark Lutz所著的Python学习手册,建议我直接学习最新版本的Python,到网站上看了一下,是3.5.1,但是不支持XP,能支持XP的是3.4.4,都是2015年12月发布的,果断更新.等漫游指南看完了,就转向那本学习手册. 学习运算符 /    除法,17/3 = 5.66... //           17 // 3 = 5  整数除法 %           17 % 3 = 2  取余数 **          

Python 2.7.8 学习笔记(001)python manuals/the python tutorial

从今天开始学python, python有点意思,第一感觉界面和matlab有点像. 手头没有什么资料,就从安装好了的一个python 2.7.8,里面有个英文版的manual,那就只好从这里开始吧,为什么不是中文版的呢??那就边看边翻译吧. python漫游指南:python是一种简单易学功能强大的编程语言.它有高效的数据结构和简单但有效的面向对象编程方法.python优雅的语法和动态拼写以及解释特性,使得它在许多平台上成为一种理想的脚本语言和快速程序开发工具. python的解释器和扩展标准