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 相关文章推荐
virtualenv实现多个版本Python共存
Aug 21 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Selenium定时刷新网页的实现代码
Oct 31 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
python打开windows应用程序的实例
Jun 28 Python
python 实现任务管理清单案例
Apr 25 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
python删除csv文件的行列
Apr 06 Python
Pygame Event事件模块的详细示例
Nov 17 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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
thinkphp连贯操作实例分析
2014/11/22 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
react build 后打包发布总结
2018/08/24 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
使用Flask集成bootstrap的方法
2018/07/24 Python
python try except 捕获所有异常的实例
2018/10/18 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
python和go语言的区别是什么
2020/07/20 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
Python实现自动装机功能案例分析
2020/10/22 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
GWT的应用有哪两种部署模式
2012/12/21 面试题
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
茶叶生产计划书
2014/01/10 职场文书
大学毕业感言100字
2014/02/03 职场文书
大学毕业感言200字
2014/03/09 职场文书
2014中考励志标语
2014/06/05 职场文书
学校开学标语
2014/10/06 职场文书
督导岗位职责范本
2015/04/10 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
java解析XML详解
2021/07/09 Java/Android
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
Vue深入理解插槽slot的使用
2022/08/05 Vue.js