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中self原理实例分析
Apr 30 Python
Python语言生成水仙花数代码示例
Dec 18 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
python学习入门细节知识点
Mar 29 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
python3去掉string中的标点符号方法
Jan 22 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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数组函数array_key_exists()小结
2015/12/10 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
javascript replace()正则替换实现代码
2010/02/26 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
vue实现购物车列表
2020/06/30 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
Python单链表简单实现代码
2016/04/27 Python
Python正则表达式知识汇总
2017/09/22 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
Python数据正态性检验实现过程
2020/04/18 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
keras K.function获取某层的输出操作
2020/06/29 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
什么是java序列化,如何实现java序列化
2012/11/14 面试题
项目计划书范文
2014/01/09 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题
分析并发编程之LongAdder原理
2021/06/29 Java/Android
tree shaking对打包体积优化及作用
2022/07/07 Java/Android