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 相关文章推荐
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
Python测试线程应用程序过程解析
Dec 31 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
浅谈python锁与死锁问题
Aug 14 Python
利用python爬取有道词典的方法
Dec 08 Python
python内置模块之上下文管理contextlib
Jun 14 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打造属于自己的MVC框架
2012/03/07 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
js实现漫天星星效果
2017/01/19 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python实现简易Web爬虫详解
2018/01/03 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
详解python中的数据类型和控制流
2019/08/08 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
Python字符串格式化输出代码实例
2019/11/22 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
python GUI模拟实现计算器
2020/06/22 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
大学生社团活动总结
2014/04/26 职场文书
工作鉴定评语
2014/05/04 职场文书
海洋科学专业求职信
2014/08/10 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书