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 时间处理datetime实例
Sep 06 Python
python使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
Python BS4库的安装与使用详解
Aug 08 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
Python整数与Numpy数据溢出问题解决
Sep 11 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
Python日志:自定义输出字段 json格式输出方式
Apr 27 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
Pandas 数据编码的十种方法
Apr 20 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获取textarea的值并处理回车换行的方法
2014/10/20 PHP
php无序树实现方法
2015/07/28 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
python中的lambda表达式用法详解
2016/06/22 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
迪拜航空官方网站:flydubai
2017/04/20 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
业务部主管岗位职责
2014/01/29 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
毕业生求职信
2014/06/10 职场文书
医院党员公开承诺书
2014/08/30 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
硕士论文致谢范文
2015/05/14 职场文书
《草船借箭》教学反思
2016/02/23 职场文书