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中遍历文件的3个方法
Sep 02 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
Python实现矩阵转置的方法分析
Nov 24 Python
PyQt5实现拖放功能
Apr 25 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
python实现杨氏矩阵查找
Mar 02 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
Python实现微信小程序支付功能
Jul 25 Python
Python有参函数使用代码实例
Jan 06 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
Python中的min及返回最小值索引的操作
May 10 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
杏林同学录(九)
2006/10/09 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
Javascript闭包实例详解
2015/11/29 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
基于jQuery的表单填充实例
2017/08/22 jQuery
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
Python如何实现文本转语音
2016/08/08 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
总经理驾驶员岗位职责
2013/12/04 职场文书
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
西式婚礼主持词
2014/03/13 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS