在Python中使用filter去除列表中值为假及空字符串的例子


Posted in Python onNovember 18, 2019

在 Python中,认为以下值为假:

None # None值

False # False值

0 # 数值零不管它是int,float还是complex类型

'',(),[] # 任何一个空的序列

{} # 空的集合

如果一个列表中含上面值为假的元素,要去除的话,可以使用内置函数的filter默认的参数None。

可以先看下filter内置函数的帮助文档

>>> help(filter)
Help on built-in function filter in module __builtin__:
 
filter(...)
 filter(function or None, sequence) -> list, tuple, or string
 
 Return those items of sequence for which function(item) is true. If
 function is None, return the items that are true. If sequence is a tuple
 or string, return the same type, else return a list.
 
>>>

从上面的doc文档可以看出,第一个参数可以为一个函数,也可以为None.

如果第一个参数为函数

>>> def odd(n):
...  return n % 2 == 1
...
>>> filter(odd, range(10))     # 第一个参数为一般函数
[1, 3, 5, 7, 9]
>>>
>>> filter(lambda x: x % 2 == 0, range(10)) # 第一个参数为匿名函数
[0, 2, 4, 6, 8]

如果第一个参数为None的话,则默认会去除序列中所有值为假的元素

>>> L = [1,'',0,'A',None,[1,2],False,3.14,[],{'a':1}, {}]
>>> filter(None, L)
[1, 'A', [1, 2], 3.14, {'a': 1}]
>>>

如果复杂一点,要过滤列表的False的值过滤点,再将" "文件填充为"default",可以这样:

>>> L = [[], 1, "", None, False, {}, 3.14, " "]
>>> map(lambda x:x if x != " " else "default", filter(None, L))
[1, 3.14, 'default']

如果再复杂一点,即要去除值为假的元素,而且要去除诸如:' ', " "等多个空字符的元素,上面的就不行了。这个时候就必须做下处理,增加一个函数来处理内含一个或多个空字符的元素:

>>> L = [1,'',0,'A'," ", None,[1,2],False,3.14,[],{'a':1}, {}]
>>> filter(lambda s: s and (type(s) != str or len(s.strip()) > 0), L)
[1, 'A', [1, 2], 3.14, {'a': 1}]
>>>

以上这篇在Python中使用filter去除列表中值为假及空字符串的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 连连看连接算法
Nov 22 Python
Python入门篇之字符串
Oct 17 Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
Python 迭代器与生成器实例详解
May 18 Python
Python实现的概率分布运算操作示例
Aug 14 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
Aug 22 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
python实现输出一个序列的所有子序列示例
Nov 18 #Python
Python中的四种交换数值的方法解析
Nov 18 #Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 #Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 #Python
详解Django配置优化方法
Nov 18 #Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 #Python
基于python操作ES实例详解
Nov 16 #Python
You might like
PHP邮件专题
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP 递归效率分析
2009/11/24 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
python写入中英文字符串到文件的方法
2015/05/06 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
Python2随机数列生成器简单实例
2017/09/04 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python pandas常用函数详解
2018/02/07 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python 循环数据赋值实例
2019/12/02 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
小学五年级学生评语
2014/04/22 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
委托收款证明
2015/06/23 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
校运会广播稿
2015/08/19 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
docker 制作mysql镜像并自动安装
2022/05/20 Servers
python数字图像处理:图像简单滤波
2022/06/28 Python