实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的负数 2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项 3.筛出集合 {77,89,32,20..}中能被3整出的元素 ---最通用方法,FOR循环迭代,加上if判断进行过滤 例如: 这样写的问题:  在Python里显得很啰嗦,效率也很差! 解决方案--- 列表  列子:  列表解析: '''filter函数filter(,)接收2个参数,第一个,传入一个过滤函数,通常用lamb…
如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) filter(lambda x:x>,data) 3,列表推倒式 4,效率对比:还是列表推导式稍高 二:字典 1,跟列表类似,推导式 先生成随机的字典(key从1-20) 过滤掉value是负数的值 三:集合 随机生成10个元素的集合 过滤掉小于0的元素,跟字典类似…
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析.字典解析和集合解析: 3.学会使用随机数的库生成测试用例: 4.学会使用列表生成式创建列表. 列表生成式即 List Comprehensions ,是 Python 内置的非常简单却强大的可以用来创建 list 的生成式. 知识点与例题讲解 下面我们给出几种在列表.字典集合中筛选数据的解决方案:…
如何快速查找到多个字典中的公共键(Key)-?   实际案例: 西班牙足球甲级联赛,每轮球员进球统计: 第1轮: { '苏亚雷斯':1,'梅西':2,'本泽马':1,...} 第2轮: { '苏亚雷斯':1,'C罗':2,'剑圣':1,...} 第3轮: { '苏亚雷斯':1,'卡尔':2,'贝利':1,...} ... 统计出前N轮,每场比赛都有进球的球员 .   --N个字典中,寻找公共键的问题 -- 比较容易想到的方法: 我们的方法: 解决方案:   利用集合(set)的交集操作 ---获…
实际案例: 某班英语成绩以字典形式存储为: { 'LiLei' : 90, 'Jim' : 88, 'Lucy': 92 } 如何根据成绩高低,计算学生排名 -- 根据分数,进行排名,并且把排名信息添加到字典中 解决方案 首先想到-- 将字典中的各项转换为元组,使用内置函数sorted排序  ( --sorted -不能直接对字典,根据值进行排序--需要转换 -把字典中的各项转换为元组,把元组放在一个列表中,对列表进行排序 -- 方案一: 将字典中的项转化为(键,值)元组, ( 方式---列表解…
实际案例: 某编程竞赛系统,对参赛选手编程解体进行计时,选手完成题目后,吧该选手解体用时记录到字典中,以便赛后按选手名查询成绩 {'Lilei':(2,43),'HanMei':(5,52),'Jim':(1,39)...} 比赛结束后,需按排名顺序依次打印选手成绩, 如何实现? from collections import OrderedDict # shuffle 洗牌函数, 可以将列表的次序打乱 from random import shuffle ''' 使用标准库 collectio…
实际案例: 1. 某随机序列 [12,5,6,4,6,5,5,7]中,找到出现次数最高的3个元素,它们出现的次数是多少? 2. 对于某英文文章的单词,进行词频统计,找到出现次数最高的10个单词,它们出现次数是多少? 案例一:  1. 某随机序列 [12,5,6,4,6,5,5,7]中,找到出现次数最高的3个元素,它们出现的次数是多少? 解决方案: 方案1 : 将序列转化为字典 {元素:频度} ,根据字典中的值排序 '''列表&生成器解析的缺点:假如列表很大,比如1万个,只需要最大前三个时候,对整…
实际案例: 学生信息系统中,数据为固定格式:(名字,年龄,性别,邮箱) ,通常使用元组来存储 使用优点: 使用元组最大的优点在于节省空间,存储相同的数据,使用元组比使用字典,空间小很多 使用缺点: 访问元组数据时,需要使用索引,(index),访问,大量索引降低程序的可读性 解决方案 方案一: 定义一系列数值常量或枚举类型 方案二:  使用标准库中 collections.nametuple 替代内置 tuple   方案一:     定义数值常量  使用枚举   #使用枚举,相当于创建了一个名…
如何在列表.字典.集合中根据条件筛选数据 问题举例: 过滤列表[1, 2, 5, -1, 9, 10]中的负数 筛选字典{“zhangsan”:97, "lisi":80, "wangwu":60, "liqiang":91}中的值高于90的键值对 筛选集合{89, 70, 60, 80, 90}中能被3整除的元素 列表 一般遇到这种问题,我们首先会想到用for循环的方式去解决 (1)for循环 from random import randin…
1.过滤掉列表中的某些项---列表解析 data=[1,4,2,8,5,-1] res=[] a.依次迭代列表中每一个项 for x in data: if >=0: res.append(x) print res b.使用lambda表达式来进行过滤 form random import randint data = [randint(-10,10)for _ in xrange(10)] filter(lambda x: x>=0,data) c.使用列表解析俩进行过滤 [x for x…