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内置函数之filter map reduce介绍
Nov 30 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
python list元素为tuple时的排序方法
Apr 18 Python
Python3实现转换Image图片格式
Jun 21 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
python实现批量移动文件
Apr 05 Python
解决Python字典查找报Keyerror的问题
May 26 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类继承 extends使用介绍
2014/01/14 PHP
php动态绑定变量的用法
2015/06/16 PHP
php验证码实现代码(3种)
2015/09/07 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
python动态视频下载器的实现方法
2019/09/16 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
基于python 取余问题(%)详解
2020/06/03 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
详解rem 适配布局
2018/10/31 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
给客户的道歉信
2014/01/13 职场文书
学习十八大的心得体会
2014/09/12 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
小学家长意见怎么写
2015/06/03 职场文书
关爱空巢老人感想
2015/08/11 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python