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 相关文章推荐
Django查询数据库的性能优化示例代码
Sep 24 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
python版本的仿windows计划任务工具
Apr 30 Python
django 删除数据库表后重新同步的方法
May 27 Python
python去除文件中重复的行实例
Jun 29 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
手写一个python迭代器过程详解
Aug 27 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
Apr 21 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Python random模块的使用示例
Oct 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
PHP 防注入函数(格式化数据)
2011/08/08 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
解析Python的缩进规则的使用
2019/01/16 Python
美术专业学生个人自我评价
2013/09/19 职场文书
党员批评与自我批评
2014/02/12 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
机械工程师岗位职责
2014/06/16 职场文书
教师求职信
2014/06/17 职场文书
教师个人读书活动总结
2014/07/08 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
匿名检举信范文
2015/03/02 职场文书
公司备用金管理制度
2015/08/04 职场文书
生活小常识广播稿
2015/08/19 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
MySQL约束超详解
2021/09/04 MySQL