Python强化训练笔记(一)——在列表,字典,集合中筛选数据
列表,字典,集合中根据条件筛选数据,如下所示
列表:[-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 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...
- python基础一 -------如何在列表字典集合中根据条件筛选数据
如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...
- 如何在列表,字典,集合中,根据条件筛选数据 -- Python数据结构与算法相关问题与解决技巧
实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的负数 2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项 3.筛出集合 {77,89, ...
- Python强化训练笔记(六)——让字典保持有序性
python的字典是一个非常方便的数据结构,使用它我们可以轻易的根据姓名(键)来找到他的成绩,排名等(值),而不用去遍历整个数据集. 例如:{'Lee': [1, 100], 'Jane': [2, ...
- Python强化训练笔记(五)——找出多个字典中的公共键
在这个问题中,我们期望得到的结果是找到这三轮比赛中,每轮都进球的球员都有谁.下面用python来模拟一下,先生成一批数据: >>> from random import randin ...
- Python强化训练笔记(四)——字典的排序
假如有学生成绩以字典顺序排列:{'Tom': 87, 'Jack': 90, 'Rose': 100.....} 想要根据学生的成绩来进行排序,可以考虑使用sorted函数.但是sorted函数用在字 ...
- Python强化训练笔记(三)——词频的统计
现有列表如下: [6, 7, 5, 9, 4, 1, 8, 6, 2, 9] 希望统计各个元素出现的次数,可以看作一个词频统计的问题. 我们希望最终得到一个这样的结果:{6:2, 7:1...}即 { ...
- Python强化训练笔记(二)——元组元素的命名
对于一个元组如: >>> s1 = ('Jim', 21, 'boy', '5788236@qq.com') 我们要得到该对象的名字,年龄,性别及邮箱的方法为s1[0],s1[1], ...
- Python强化训练笔记(七)——使用deque队列以及将对象保存为文件
collections模块中的deque对象是一个队列,它有着正常队列的先进先出原则.我们可以利用这个对象来实现数据的保存功能. 例如,现有一个猜数字大小的游戏,系统开始会随机roll点一个0-100 ...
随机推荐
- PHP 配置文件详解(php.ini 详解 )
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;; ...
- jquery的隐藏与显示
###显示与隐藏,通过用hide()和show()函数来实现 语法: $(selector).hide(speed,callback); $(selector).show(speed,callback ...
- #asp.net core mvc 的视图注入
View injection is the most useful feature introduced in ASP.NET Core. 1.添加一个FruitsService public cla ...
- 使用递推解题:EOJ2999
题目: Description 给定一个多项式 (ax+by)k,计算多项式展开后 xnym 项的系数. Input 第1行:一个整数T(1≤T≤10)为问题数. 接下来共T行.每行5个整数,分别为a ...
- 【BZOJ3631】松树的新家 树链剖分
BZOJ3631 松树的新家 Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他 ...
- over
overflow内容溢出要用到: scroll(内容溢出,出现滚动条) auto(自动适应) hidden(超出隐藏) overflow-y:scroll: 沿着y轴出现滚动条: overflow-x ...
- 如何提升 service 等级,不被kill(整合)
(1)在应用退到后台后,另起一个只有1像素的页面停留在桌面上,让自己保持前台状态,保护自己不被后台清理工具杀死. (2)用Foreground Service. 参考地址:Android Servic ...
- 洛谷 P1092 虫食算 Label:dfs
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- 转:js-sdk探索之微信网页分享
原文地址 微信是一个很不错的传播平台,最近公司需要做一个新年贺卡,使用html5制作一个很小的动画,然后发送给客户,不需要和后台有任何的联系,一个很简单的功能,需要利用微信的分享功能,毕竟微信分享的带 ...
- Linux之线程管理
linux下查看线程数的几种方法 1. cat /proc/${pid}/status [root@limt01 2325]# ps -ef|grep xinetd|grep -v grep ro ...