博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
py编程技巧-1.1-如何在列表、字典、集合中根据条件筛选数据
阅读量:6809 次
发布时间:2019-06-26

本文共 1348 字,大约阅读时间需要 4 分钟。

所有代码先加这行解决中文乱码问题

# -*- coding: utf-8 -*-

版本区别注意:

py2.7: xrange();

py3.x: range();

1. 通用做法

data = [1,2,3,4,5,6,7,8]res = []for x in data:    if x >= 2:        res.append(x)print res

2. 高级:(函数式编程/列表解析/字典解析/集合解析)

#函数式编程res = filter(lambda x:x>=2,data)print res#列表解析res = [x for x in data if x>=2]print res#字典解析dic = {'a':23,'b':98,'c':0}res = {k:v for k,v in dic.iteritems() if v>90}print res#集合解析s = (1,2,3,4,5,6,7,8)res = {x for x in data if x>=2}print res

3. 三个实例

3.1 example1 列表解析

from random import randint#使用列表生成式生成10个元素data = [randint(-10,10) for _ in xrange(10)]print data#filter(func,sequence)res = filter(lambda x:x>=0,data)print res# 列表解析res = [x for x in data if x>=0]print res#Time: filter&列表解析#>>>代表在ipython下#>>> timeit filter(lambda x:x>=0,data)#>>> timeit [x for x in data if x>=0]# 结果:列表解析:432ns(纳秒)#       filter  :1.4us(微秒)=1400ns#       1微秒等于1000纳秒res = [x for x in data if x>=0]print res

列表解析更快。大约快两三倍。

3.2 example2 字典解析

from random import randint# 某班有20个人,分数分布在60~100d = {x: randint(60,100) for x in xrange(1,21) }print dprint { k for k in d if k>10}print {v for v in d.values() if v>90}print {k for k in d.keys() if k>10}res = {k:v for k,v in d.iteritems() if v>90}print res

3.3 example3集合解析

from random import randintdata = [randint(-10,10) for _ in xrange(10)]s = set(data) print ssres = {x for x in s if x % 3 == 0}print sres

转载地址:http://oyhwl.baihongyu.com/

你可能感兴趣的文章
383. 赎金信
查看>>
MYSQL 复制详解
查看>>
《Python核心编程》第二版第八章练习题答案 第三部分
查看>>
数据库优化案例——————某知名零售企业ERP系统
查看>>
Oracle表字段的增加、删除、修改和重命名
查看>>
ApacheHttpServer出现启动报错:the requested operation has failed解决办法
查看>>
linux指令格式介绍
查看>>
synchornized实现原理
查看>>
笔试/面试题
查看>>
angular1的复选框指令--checklistModel
查看>>
Java内存区域
查看>>
nginx+uwsgi启动Django项目
查看>>
深入理解Python中赋值、深拷贝(deepcopy)、浅拷贝(copy)
查看>>
最大岛屿-----简单的 搜索
查看>>
判断当前线程是否有管理者权限
查看>>
js 的arguments的一些理解资料
查看>>
xampp启动遇到的小问题
查看>>
python set dict tuple and list
查看>>
通过 docker 搭建自用的 gitlab 服务
查看>>
svg-写一个简单的进度条
查看>>