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

作者:杰瑞26 时间:2022-02-01 06:47:35 

在 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}]
>>>

来源:https://blog.csdn.net/Jerry_1126/article/details/84640993

标签:Python,filter,列表,字符串
0
投稿

猜你喜欢

  • 怎么让别人看不到网页源代码

    2008-03-21 13:06:00
  • 显示ASP页面源码的代码

    2008-10-12 13:05:00
  • 解决Python安装时报缺少DLL问题【两种解决方法】

    2023-12-27 01:49:12
  • Bootstrap实现圆角、圆形头像和响应式图片

    2023-08-12 07:16:59
  • Alexa排名数据xml接口及其参数说明

    2008-11-07 13:03:00
  • PHP实现将浏览历史页面网址保存到cookie的方法

    2023-08-16 05:25:29
  • Ubuntu 下 vim 搭建python 环境 配置

    2022-04-27 21:25:17
  • 如何使用postman(新手入门)

    2023-06-12 14:00:31
  • python中使用百度音乐搜索的api下载指定歌曲的lrc歌词

    2023-06-14 06:23:07
  • 解决MySQL启动时1067错误

    2010-09-30 14:09:00
  • 实例:arguments.callee的应用

    2009-04-20 12:38:00
  • javascript分页代码实例分享(js分页)

    2023-10-11 10:00:57
  • 详解Python中的__getitem__方法与slice对象的切片操作

    2022-04-26 19:54:55
  • Python实现暴力破解有密码的zip文件的方法

    2023-11-22 22:48:40
  • 正则的replace方法(产生的字符串副本)

    2008-06-03 13:31:00
  • 影响SQL Server性能的三个关键点

    2009-03-09 13:11:00
  • Gradio机器学习模型快速部署工具接口状态

    2023-08-11 13:36:27
  • 老生常谈Python之装饰器、迭代器和生成器

    2023-04-08 08:28:19
  • 网页效果图设计之色彩索引

    2008-03-23 13:53:00
  • Anaconda安装以及修改环境默认位置图文教程

    2021-12-27 08:52:01
  • asp之家 网络编程 m.aspxhome.com