Python列表解析操作实例总结


Posted in Python onFebruary 26, 2020

本文实例讲述了Python列表解析操作。分享给大家供大家参考,具体如下:

列表解析

Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一个函数,从而将一个 list 映射为另一个 list。
列表解析,又叫列表推导式( list comprehension)
列表解析比 for 更精简,运行更快,特别是对于较大的数据集合
列表解析可以替代绝大多数需要用到 map和 filter的场合

列表推导式提供了一个创建链表的简单途径,无需使用 map() , filter() 以及 lambda 。以定义方式得到列表通常要比使用构造函数创建这些列表更清晰。每一个列表推导式包括在一个 for 语句之后的表达式,零或多个 for 或 if 语句。返回值是由 for 或 if 子句之后的表达式得到的元素组成的列表。如果想要得到一个元组,必须要加上括号。

基本列表解析

基本

>>> [x for x in range(5)]  # [0, 1, 2, 3, 4]
l1 = [1,2,3,4]
[ x*2 for x in l1]  #[2,4,6,8]

多个值的

[ '%s = %s' for (k, v) in a_map.items()]

两次循环

>>> l1 = [1,2,3,4]
>>> l2 = [1,2,3,4]
>>> [x+y for x in l1 for y in l2]
[2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8]

可以调用函数

[ func(x) for x in l1] #等价于map

注意,列表解析不会改变原有列表的值,会创建新的list

条件列表解析
[ x for x in range(100) if x%2 ==0 ]
嵌套列表解析
mat = [ [1, 2, 3],[4, 5, 6], [7, 8, 9]]

交换行列

[ [row[i] for row in mat] for i in (0,1,2)] #[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
其他:

1.根据索引取元素时,需要进行边界检查 IndexError 切片取,不需要,超过边界不会异常

2.在迭代中修改列表 注意,不安全,不建议这么干 但是可以 for i in l1[:]: l1.insert()……

3.多个list合成一个 就是

['a','b',.....],['a','b'.....]['a','b'.....]

变为

['a','b',.....,'a','b'.....'a','b'.....]

处理

>>> sum ([[ 'a', 'b' ],['a' , 'b'],[ 'a' ,'b' ]], [])
['a' , 'b' , 'a', 'b' , 'a' , 'b']
>>> list (itertools .chain([ 'a' ,'b' ],[ 'a', 'b' ],['a' , 'b']))
['a' , 'b' , 'a', 'b' , 'a' , 'b']

4.关于堆栈和队列

通过上面的操作,可以发现,很轻易可以拿列表当做堆栈或者队列使用
当然,他们有自己的模块,可以查相关库

5.序列相关模块

array 一种受限制可变序列类型,要求所有元素必须是相同类型

copy 提供浅拷贝和深拷贝的能力

operator 包含函数调用形式的序列操作符,如 operator.concat(m,n) 相当于m+n

re 正则表达式

types 包含Python 支持的所有类型

collections 高性能容器数据类型

更多关于Python相关内容可查看本站专题:《Python列表(list)操作技巧总结》、《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python入门教程之if语句的用法
May 14 Python
浅谈Python中的闭包
Jul 08 Python
Python中的变量和作用域详解
Jul 13 Python
Python中shutil模块的学习笔记教程
Apr 04 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
Python检测数据类型的方法总结
May 20 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
Python json转字典字符方法实例解析
Apr 13 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 #Python
python实现低通滤波器代码
Feb 26 #Python
Python解释器及PyCharm工具安装过程
Feb 26 #Python
Python基础之列表常见操作经典实例详解
Feb 26 #Python
Python TKinter如何自动关闭主窗口
Feb 26 #Python
Flask和pyecharts实现动态数据可视化
Feb 26 #Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 #Python
You might like
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP 加密与解密的斗争
2009/04/17 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
深入php多态的实现详解
2013/06/09 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python手机号码归属地查询代码
2016/05/04 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
渡河少年教学反思
2014/02/12 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
大学生自我评价范文
2015/03/03 职场文书
廉政承诺书2015
2015/04/28 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书