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程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
Python高级用法总结
May 26 Python
Python for循环与range函数的使用详解
Mar 23 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
python读取文件指定行内容实例讲解
Mar 02 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
pandas数值排序的实现实例
Jul 25 Python
Python torch.flatten()函数案例详解
Aug 30 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下过滤HTML代码的函数
2007/12/10 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
Python文件与文件夹常见基本操作总结
2016/09/19 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
pycharm安装图文教程
2017/05/02 Python
python实现自动发送邮件
2018/06/20 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
python求最大值最小值方法总结
2019/06/25 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
python GUI计算器的实现
2020/10/09 Python
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
婚纱摄影师求职信范文
2014/04/17 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
入党后的感想
2015/08/10 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android