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连接mysql并提交mysql事务示例
Mar 05 Python
Python调用C/C++动态链接库的方法详解
Jul 22 Python
Python 的内置字符串方法小结
Mar 15 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
python 计算文件的md5值实例
Jan 13 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
pycharm配置git(图文教程)
Aug 16 Python
原生python实现knn分类算法
Oct 24 Python
flask实现验证码并验证功能
Dec 05 Python
python代码中怎么换行
Jun 17 Python
python中导入 train_test_split提示错误的解决
Jun 19 Python
Python txt文件常用读写操作代码实例
Aug 03 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转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php数组去重复数据示例
2014/02/25 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
图解javascript作用域链
2019/05/27 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
python检测远程端口是否打开的方法
2015/03/14 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
python 产生token及token验证的方法
2018/12/26 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
Python内存映射文件读写方式
2020/04/24 Python
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
中专毕业生自荐信
2013/11/16 职场文书
我的理想演讲稿
2014/04/30 职场文书
红色旅游心得体会
2014/09/03 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
财务出纳岗位职责
2015/03/31 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书