案例学Python:filter()函数的用法,高级!

简介: 案例学Python:filter()函数的用法,高级!

大家好,这里是程序员晚枫,又来分享有用的Python知识了。

Python之所以好用,是因为有大量用于科学计算的内置函数和第三方库。用好这些第三方库,可以显著提高我们编程的速度和质量。

今天我们一起来看一下Python中一个重要的内置函数:filter

filter() 是 Python 中的一个内置函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。filter() 函数接收两个参数,一个是函数,一个是序列。序列的每个元素作为参数传递给函数进行判定,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

1、简单用法

先说明一下需求,我们现在需要从0-10中筛选出所有的偶数,如果没有filter函数,我们的代码会像下面这么写。


# 创建一个包含奇数和偶数的列表
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 创建一个存放结果的列表
res_numbers = []


for n in numbers:
    if n%2==0:
        res_numbers.append(n)

print(res_numbers)

而如果我们使用filter函数,代码可以这么写,👇

# 定义一个过滤函数,用于判断一个数是否为偶数  
def is_even(n):
    return n % 2 == 0


# 创建一个包含奇数和偶数的列表  
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用 filter() 函数过滤出偶数  
res_numbers = filter(is_even, numbers)

# 使用 list() 将结果转换为列表  
result = list(res_numbers)
print(result)  # 输出: [0, 2, 4, 6, 8, 10]

在这个例子中,filter() 函数接收了两个参数:一个是我们定义的 is_even 函数,用于判断一个数是否为偶数;另一个是 numbers 列表,我们希望从中筛选出偶数。filter() 函数将 is_even 函数应用到 numbers 中的每一个元素,然后返回一个迭代器,其中包含所有使 is_even 返回 True 的元素。最后,我们使用 list() 函数将这个迭代器转换为列表。

2、复杂用法

还是上面这个例子,细心的同学可能发现,用了filter函数,代码变得更加冗长了。

难道是filter不好用吗?

是因为我们没用上filter的精髓:filter可以结合lambda表达式,进行更加高效的筛选。如下面的代码所示。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(res_numbers)

在这个代码中,我们只用了1行代码,就实现了偶数的筛选,而其中的筛选条件就来自lambda表达式。

在实际的编程工作中,很多筛选条件,都不值得用几行代码去表达,非常的浪费时间。

而使用filter这种内置函数 + lambda表达式的方式,就可以很简洁的解决这种无聊的代码过多的问题。


你学会了吗?使用过程中有任何问题,欢迎在评论区交流~

相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
344 1
|
5月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
658 1
|
5月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
295 0
|
6月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
317 101
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
python torch基础用法
本教程系统讲解PyTorch基础,涵盖张量操作、自动求导、神经网络构建、训练流程、GPU加速及模型保存等核心内容,结合代码实例帮助初学者快速掌握深度学习开发基础,是入门PyTorch的实用指南。
699 6
|
5月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
Python 移动开发
12.3、python内置函数—filter和map
内置函数——filter和map filter filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
1116 0
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
671 102
|
6月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
405 104
|
6月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
315 103