Python中使用filter过滤列表的一个小技巧分享


Posted in Python onMay 02, 2020

有的时候使用dir(Module),可以查看里面的方法,但是模块自带的属性"__"开头的也会显示,如下:

>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_Buil
tinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_acos', '_c
eil', '_cos', '_e', '_exp', '_hashlib', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_
generator', '_urandom', '_warn', 'betavariate', 'choice', 'division', 'expovariate', 'gammavariate', 'gauss', 'getrandbi
ts', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sam
ple', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>

这个时候想过滤以"_"或"__"开头的方法,可以:

>>> filter(lambda s: not s.startswith("_"), dir(random))
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', 'betav
ariate', 'choice', 'division', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormv
ariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 't
riangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>

从上面来看,使用filter()函数,结合lambda函数很好的完成了任务。 其他的例子,比如想从一个列表中过滤非数字的字符串列表:

>>> L = ["1234", "ABCD", "BOOK"]
>>> filter(lambda s: s.isdigit(), L)
['1234']
>>>

补充知识:python不同长度列表,对应合并

1. 说明

lis1 = [{‘OS_bit': u'64 \u4f4d',
‘OS_version': ‘10.0.10240',
‘OS_name': u'Microsoft Windows 10 \u4f01\u4e1a\u7248 2015 \u957f\u671f\u670d\u52a1\u65b9\u6848'}]
lis2 = [{‘ip':‘10.20.122.32'}]
lis3 = [{‘CPU_name': u'Intel® Core™ i5-4200H CPU @ 2.80GHz'}]
lis4 = [{‘memory_size': ‘1600MHz',
‘memory_name': u'Physical Memory 0'},
{‘memory_size': ‘1600MHz',
‘memory_name': u'Physical Memory 2'}]
lis5 = [{‘GPU_name': u'NVIDIA GeForce GTX 950M',
‘GPU_size': ‘2G'},
{‘GPU_name': u'Intel® HD Graphics 4600',
‘GPU_size': ‘1G'}]

有这五个列表,要求合并成一个列表,并且所有列表的第一元素放在新列表的第一元素,以此类推。

2. 代码

# !/usr/bin/env/python
# _*_coding:utf-8_*_
# Data:2019-04-10
# Auther:苏莫
# Link:QQ2388873062
# Address:https://blog.csdn.net/lingluofengzang
# PythonVersion:python2.7

import sys

reload(sys)
sys.setdefaultencoding('utf-8')

lis1 = [{'OS_bit': u'64 \u4f4d', 
 'OS_version': '10.0.10240', 
 'OS_name': u'Microsoft Windows 10 \u4f01\u4e1a\u7248 2015 \u957f\u671f\u670d\u52a1\u65b9\u6848'}]
lis2 = [{'ip':'10.20.122.32'}]
lis3 = [{'CPU_name': u'Intel(R) Core(TM) i5-4200H CPU @ 2.80GHz'}]
lis4 = [{'memory_size': '1600MHz', 
 'memory_name': u'Physical Memory 0'}, 
 {'memory_size': '1600MHz', 
 'memory_name': u'Physical Memory 2'}]
lis5 = [{'GPU_name': u'NVIDIA GeForce GTX 950M', 
 'GPU_size': '2G'}, 
 {'GPU_name': u'Intel(R) HD Graphics 4600', 
 'GPU_size': '1G'}]

is_all = [lis1,lis2,lis3,lis4,lis5]
#l print lis_all

new_lis = []
for j in range(2):
 lis = {}
 for i in range(len(lis_all)):
 try:
  lis = dict(lis, **lis_all[i][j])
 except Exception as e:
  pass
 # else:
 new_lis.append(lis)

print new_lis

3.结果

Python中使用filter过滤列表的一个小技巧分享

以上这篇Python中使用filter过滤列表的一个小技巧分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 多线程应用介绍
Dec 19 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
python安装教程
Feb 28 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
python数据归一化及三种方法详解
Aug 06 Python
pytest中文文档之编写断言
Sep 12 Python
Django实现简单网页弹出警告代码
Nov 15 Python
python实现扫雷小游戏
Apr 24 Python
Pytorch实验常用代码段汇总
Nov 19 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
python实现不同数据库间数据同步功能
Feb 25 Python
Python3接口性能测试实例代码
Jun 20 Python
python同时遍历两个list用法说明
May 02 #Python
python多线程实现同时执行两个while循环的操作
May 02 #Python
python 实现两个线程交替执行
May 02 #Python
Python中使用threading.Event协调线程的运行详解
May 02 #Python
浅谈Python3多线程之间的执行顺序问题
May 02 #Python
python继承threading.Thread实现有返回值的子类实例
May 02 #Python
Python3-异步进程回调函数(callback())介绍
May 02 #Python
You might like
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
PHP中header用法小结
2016/05/23 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
wxPython中listbox用法实例详解
2015/06/01 Python
Python画图学习入门教程
2016/07/01 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
python3.6数独问题的解决
2019/01/21 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
优秀高中生事迹材料
2014/02/11 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
中标通知书范本
2015/04/17 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android