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中使用PIPE操作Linux管道
Feb 04 Python
Python使用Redis实现作业调度系统(超简单)
Mar 22 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
python连接mongodb密码认证实例
Oct 16 Python
Django REST framework 分页的实现代码
Jun 19 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
Python的bit_length函数来二进制的位数方法
Aug 27 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
python实现IOU计算案例
Apr 12 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
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
Python生成器以及应用实例解析
2018/02/08 Python
python实现图片文件批量重命名
2020/03/23 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Python基于百度云文字识别API
2018/12/13 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
大学生应聘自荐信
2013/10/11 职场文书
技术总监岗位职责
2013/12/05 职场文书
学习心得体会
2014/01/01 职场文书
就业协议书怎么填
2014/04/11 职场文书
教师求职信范文
2014/05/24 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
公司租车协议书
2015/01/29 职场文书
党支部综合考察意见
2015/06/01 职场文书
深入浅析React中diff算法
2021/05/19 Javascript