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 random模块(获取随机数)常用方法和使用例子
May 13 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
Django Rest framework频率原理与限制
Jul 26 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Python 读取位于包中的数据文件
Aug 07 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
May 06 Python
Python中requests库的用法详解
Jun 05 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中几个常用的魔术常量
2012/02/23 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
Python实现的简单万年历例子分享
2014/04/25 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
Python 实现微信自动回复的方法
2020/09/11 Python
Python 串口通信的实现
2020/09/29 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
StringBuilder和String的区别
2015/05/18 面试题
家长给小学生的评语
2014/01/30 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
保密承诺书
2014/03/27 职场文书
优秀员工评优方案
2014/06/13 职场文书
中秋节慰问信
2015/02/15 职场文书
领导离职感言
2015/08/03 职场文书