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 排列组合之itertools
Mar 20 Python
python制作一个桌面便签软件
Aug 09 Python
Python做简单的字符串匹配详解
Mar 21 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
Python 3.8 新功能全解
Jul 25 Python
深入解析神经网络从原理到实现
Jul 26 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
基于python和flask实现http接口过程解析
Jun 15 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
python实现excel公式格式化的示例代码
Dec 23 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 源代码压缩小工具
2009/12/22 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
date.parse在IE和FF中的区别
2010/07/29 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
js select option对象小结
2013/12/20 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
Angular排序实例详解
2017/06/28 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
python 调用c语言函数的方法
2017/09/29 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
Pytorch释放显存占用方式
2020/01/13 Python
django跳转页面传参的实现
2020/09/17 Python
python 对xml解析的示例
2021/02/27 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
会计毕业生自我鉴定
2013/11/04 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
寒山寺导游词
2015/02/03 职场文书
会议营销主持词
2015/07/03 职场文书