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 del()函数用法
Mar 24 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
Python中的random()方法的使用介绍
May 15 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
如何利用python进行时间序列分析
Aug 04 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
Sep 21 Python
python中__slots__节约内存的具体做法
Jul 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
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
python中的tcp示例详解
2018/12/09 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
python字典与json转换的方法总结
2020/12/28 Python
Python 图片处理库exifread详解
2021/02/25 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
土木工程专业个人求职信
2013/12/05 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
欢迎新生标语
2014/10/06 职场文书
给老婆的检讨书
2015/01/27 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server
一文解答什么是MySQL的回表
2022/08/05 MySQL