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基础教程之元组操作使用详解
Mar 25 Python
python动态参数用法实例分析
May 25 Python
Python3.6正式版新特性预览
Dec 15 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
Python 70行代码实现简单算式计算器解析
Aug 30 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
Python接口测试结果集实现封装比较
May 01 Python
Pycharm修改python路径过程图解
May 22 Python
如何解决安装python3.6.1失败
Jul 01 Python
快速创建python 虚拟环境
Nov 28 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
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
js 小数取整的函数
2010/05/10 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
Python画图学习入门教程
2016/07/01 Python
详解Python_shutil模块
2019/03/15 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
英国现代绅士品牌:Hackett
2017/12/17 全球购物
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
优秀士兵个人事迹材料
2014/01/19 职场文书
模具毕业生推荐信
2014/02/15 职场文书
成人继续教育实施方案
2014/03/01 职场文书
团日活动总结书
2014/05/08 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
关于工作经历的证明书
2014/10/11 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
无保留意见审计报告
2015/06/05 职场文书
人生遥控器观后感
2015/06/11 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
浅谈Python类的单继承相关知识
2021/05/12 Python
Go中的条件语句Switch示例详解
2021/08/23 Golang
python flappy bird小游戏分步实现流程
2022/02/15 Python
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技