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中几个比较常见的名词解释
Jul 04 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
python实现傅里叶级数展开的实现
Jul 21 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
Django框架首页和登录页分离操作示例
May 28 Python
python如何删除文件中重复的字段
Jul 16 Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 Python
Python实现图像的垂直投影示例
Jan 17 Python
Python 统计位数为偶数的数字代码详解
Mar 15 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
Python控制鼠标键盘代码实例
Dec 08 Python
Python 阶乘详解
Oct 05 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
jQuery hover 延时器实现代码
2011/03/12 Javascript
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
node内置调试方法总结
2018/02/22 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
详解python读取image
2019/04/03 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
2020/04/01 Python
jupyter实现重新加载模块
2020/04/16 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
python中最小二乘法详细讲解
2021/02/19 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
大学生创业计划书怎么写
2014/09/15 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书