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 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
Python写的一个定时重跑获取数据库数据
Dec 28 Python
wxpython实现图书管理系统
Mar 12 Python
Python中的Django基本命令实例详解
Jul 15 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
python矩阵/字典实现最短路径算法
Jan 17 Python
Python实现图片添加文字
Nov 26 Python
Django Serializer HiddenField隐藏字段实例
Mar 31 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
python如何正确使用yield
May 21 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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数据库连接类~~做成一个分页类!
2006/11/25 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
详解Python打包分发工具setuptools
2019/08/05 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python logging.info在终端没输出的解决
2020/05/12 Python
django下创建多个app并设置urls方法
2020/08/02 Python
浅析python连接数据库的重要事项
2021/02/22 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
管理学专业个人求职信范文
2013/12/13 职场文书
工商管理毕业生推荐信
2013/12/24 职场文书
给导游的表扬信
2014/01/10 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
培训班开班主持词
2015/07/02 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS