python列表解析
列表解析来自函数式编程语言(haskell),语法如下:
[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr]
第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
例子如下:
>>> seq = [11,10,9,9,5,35,8,20,31,72,54,53] >>> filter(lambda x:x%2,seq) [11, 9, 9, 5, 35, 31, 53] >>> [x for x in seq if x%2] [11, 9, 9, 5, 35, 31, 53]
更复杂的如求矩阵:
#3行5列的矩阵 >>> [(x+1,y+1) for x in range(3) for y in range(5)] [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)] #简单的3行3列 >>> [(x,y) for x in range(3) for y in range(3)] [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] #模拟 >>> for x in range(3):for y in range(3):print x,y 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1
计算一个文件的字数和大小:
>>> f = open('demo.txt','r') >>> #计算单词的个数 >>> len([word for line in f for word in line.split()]) 1942 >>> #计算文件大小 >>> os.stat('demo.txt').st_size 14051L >>> f.seek(0) #seek()函数回到文件头部,因为迭代器已经访问完了文件的所有行 >>> sum([len(word) for line in f for word in line.split()]) 10806 >>> f.close() >>>
经典例子:
book=[ {"name":u"C#从入门到精通","price":23.7,"store":u"卓越"},{"name":u"ASP.NET高级编程","price":44.5,"store":u"卓越"},{"name":u"Python核心编程","price":24.7,"store":u"当当"},{"name":u"JavaScript大全","price":45.7,"store":u"当当"},{"name":u"Django简明教程","price":26.7,"store":u"新华书店"},{"name":u"深入Python","price":55.7,"store":u"新华书店"},]
1、书籍信息中价格最低的
#No1:原始方式: >>> price=[] >>> for item in books:for p in item:if p == 'price':price.append(item[p])>>> min(price) 23.699999999999999 #No2:列表解析: >>> min([item[p] for item in books for p in item if p=='price']) 23.699999999999999
#Python相关书籍检索 for item in books:for p in item:if item['name'].find('Python')>=0:print item[p], #24.7 Python核心编程 当当 55.7 深入Python 新华书店total = [item[p] for item in books for p in item if item['name'].find('Python')>=0] print total #[24.699999999999999, u'Python\u6838\u5fc3\u7f16\u7a0b', u'\u5f53\u5f53', 55.700000000000003, u'\u6df1\u5165Python', u'\u65b0\u534e\u4e66\u5e97']
转载于:https://www.cnblogs.com/muzinan110/p/4920002.html
python列表解析相关推荐
- python列表解析的新方法
python 列表解析我感觉是python非常灵活的一个地方,一开始接触它的时候,特别是之前学过其它的语言, 你会感觉很不习惯,怎么看怎么不对劲,老是觉的哪个地方怪怪的,这就是列表解析的魔力所在. p ...
- 列表解析python_基于Python列表解析(列表推导式)
列表解析--用来动态地创建列表 [expr for iter_var in iterable if cond_expr] 例子一: map(lambda x: x**2, range(6)) [0, ...
- python 列表操作详解,Python列表解析操作实例总结
本文实例讲述了Python列表解析操作.分享给大家供大家参考,具体如下: 列表解析 Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一 ...
- 不会但一定要了解的方面,python列表解析方式
Python支持各种解析(comprehension)操作,比如列表解析.集合解析.元组解析.字典解析.它们根据某些元素来创建(推导)出一个新的列表.集合.元组.字典等.所以有的地方也称为推导,比如列 ...
- python天天向上代码解析-python列表解析和生成器表达式
列表解析在需要改变列表而不是需要新建某列表时,可以使用列表解析.列表解析表达式为: [expr for iter_var in iterable] [expr for iter_var in iter ...
- Python 列表解析 大文件
如果在一个4G的大文件test.log中提取里面有error的log: 大家第一想法就是通过打开文件然后每一行的查找,耗时19s import timestart_time = time.time() ...
- python列表解析([ x for x in list])
转载至 列表解析 定义和说明 >Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一个函数,从而将一个 list 映射为另一个 l ...
- python列表解析,生成表达式(一分钟读懂)
如果想通过操作和处理一个序列来创建一个新的列表时,可以使用列表解析和生成表达式 区分就是 [ ] ( ) 1.列表解析 list comprehensions 2.生成表达式 a = [ i for ...
- python 列表解析
2019独角兽企业重金招聘Python工程师标准>>> 1.生成行索引 2.过滤特殊行 1.生存行号 n [6]: [[i, k] for i, k in enumerate(ope ...
最新文章
- 企业单点登录解决方案(CAS)之二安装要求
- 【 FPGA 】半带 FIR 滤波器(Half-band FIR Filter)
- bgl 词典_器材屋 篇五十二:“哪里不会点哪里”的后时代——哪里不识扫哪里:科大讯飞扫描词典笔评测_点读机...
- SpringMVC-web.xml头代码
- python中遍历结构可以是哪些数据类型_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...
- 期货计算机撮合成交的原则,[期货知识]计算机撮合成交方式是什么?成交价形成方式有哪些 - 南方财富网...
- python selenium span内容读取_【程仁智推荐】Selenium自动化测试入门
- 0.5px边框,css及sass
- dell服务器怎么用u盘系统安装win7系统教程,戴尔DellU盘重装系统操作教程
- 170705、springboot编程之自定义properties
- 读李云同学的博文:无能的很可能正是我们自己
- c语言立体爱心会跳动,c语言编程实例——小球跳动
- si4463 WDS生成文件和参数配置的关系
- python实现证件照换底色
- 熟识 : 计算机文化(收藏)
- nginx+rtmp(或http-flv)+ffmpeg搭建流媒体视频直播服务器
- 计算机系统的组成中的软件部分
- PHP给微信二维码 添加背景和昵称 ,微信带参数海报跨坑记录。
- 【CSDN周赛第38期】Python题解
- zoj 2334 Monkey King