列表,字典,集合中根据条件筛选数据,如下所示

列表:[-10,2,2,3,-2,7,6,9] 找出所有的非负数

字典:{1:90,2:55,3:87...} 找出所有值大于60的键值对

集合:{2,3,8,6,7,5} 找出所有被3整除的数

列表
>>> from random import randint
>>> data = [randint(-10,10) for x in xrange(10)]
>>> data
[-1, 8, -9, 9, 10, -2, 6, -8, -2, 10]

对于列表来说,想要对其中的数值进行筛选,最先想到的应该是利用 遍历 :


>>> res = []
>>> for x in data:
>>> if x >= 0:
>>> res.apend(x) >>> res [8,9,10,6,10]

较为常用的方法还有使用 过滤函数filter


>>> filter(lambda x: x >= 0, data) [8,9,10,6,10]

也可以使用 列表生成式


>>> [x for x in data if x >= 0]
[8, 9, 10, 6, 10]

对比这三种方法,开发中通常使用第三种,列表生成式,因为它的运行效率要比过滤函数filter高,而对于第一种则不会去使用。

字典

假如现有20名同学,他们的序号和成绩以对应形式的字典给出,如下所示:


>>> students = {x: randint(30, 100) for x in xrange(1, 21)}
>>> students
{1: 31, 2: 37, 3: 34, 4: 77, 5: 69, 6: 68, 7: 84, 8: 83, 9: 49, 10: 60, 11: 39,
12: 96, 13: 79, 14: 80, 15: 90, 16: 75, 17: 38, 18: 61, 19: 97, 20: 66}

现在要筛选出成绩优秀(即80分以上)的同学。

使用字典解析:
>>> {k:v for k,v in students.iteritems() if v >= 80}
{7: 84, 8: 83, 12: 96, 14: 80, 15: 90, 19: 97}

这个过程中,使用了students.iteritems()而不只是students,这是由于如果只遍历students则只会得到键,而不会得到值。

集合 集合解析:
>>> data
[-1, 8, -9, 9, 10, -2, 6, -8, -2, 10]
>>> s = set(data)
>>> s
set([6, 8, 9, 10, -1, -9, -8, -2])
>>> {x for x in s if x % 3 == 0}
set([9, 6, -9])

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: 数据Python
分页:12
转载请注明
本文标题:Python强化训练笔记(一)――在列表,字典,集合中筛选数据
本站链接:http://www.codesec.net/view/480511.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(30)