Python中利用filter过滤假值与空字符串详解

Ryan
Ryan
发布时间:2026-10-13| 6人浏览过
原创

本文详解Python中filter函数的两种用法。当第一个参数为None时,自动剔除None、False、0及空序列等假值;若需进一步处理含空格字符串或进行特定替换,可传入自定义函数或lambda表达式,实现更灵活的列表过滤与数据清洗。

Python中假值的定义

在 Python 中,以下对象会被判定为布尔假值:

None # None值

False # False值

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

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

{} # 空的集合

使用filter过滤假值

若需从列表剔除上述假值元素,可直接使用内置函数 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.
 
>>>

根据上述文档说明,filter 的第一个参数可以是任意函数,也可以指定为 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",可结合 map 与 filter 实现:


>>> 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。