在Python中使用filter去除列表中值为假及空字符串的例子
在Python中,认为以下值为假:
None#None值
False#False值
0#数值零不管它是int,float还是complex类型
'',(),[]#任何一个空的序列
{}#空的集合
如果一个列表中含上面值为假的元素,要去除的话,可以使用内置函数的filter默认的参数None。
可以先看下filter内置函数的帮助文档
>>>help(filter) Helponbuilt-infunctionfilterinmodule__builtin__: filter(...) filter(functionorNone,sequence)->list,tuple,orstring Returnthoseitemsofsequenceforwhichfunction(item)istrue.If functionisNone,returntheitemsthataretrue.Ifsequenceisatuple orstring,returnthesametype,elsereturnalist. >>>
从上面的doc文档可以看出,第一个参数可以为一个函数,也可以为None.
如果第一个参数为函数
>>>defodd(n): ...returnn%2==1 ... >>>filter(odd,range(10))#第一个参数为一般函数 [1,3,5,7,9] >>> >>>filter(lambdax: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(lambdax:xifx!=""else"default",filter(None,L)) [1,3.14,'default']
如果再复杂一点,即要去除值为假的元素,而且要去除诸如:'',""等多个空字符的元素,上面的就不行了。这个时候就必须做下处理,增加一个函数来处理内含一个或多个空字符的元素:
>>>L=[1,'',0,'A',"",None,[1,2],False,3.14,[],{'a':1},{}] >>>filter(lambdas:sand(type(s)!=strorlen(s.strip())>0),L) [1,'A',[1,2],3.14,{'a':1}] >>>
以上这篇在Python中使用filter去除列表中值为假及空字符串的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。