案例学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表达式的方式,就可以很简洁的解决这种无聊的代码过多的问题。


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

相关文章
|
7天前
|
缓存 监控 程序员
Python中的装饰器是一种特殊类型的声明,它允许程序员在不修改原有函数或类代码的基础上,通过在函数定义前添加额外的逻辑来增强或修改其行为。
【6月更文挑战第30天】Python装饰器是无侵入性地增强函数行为的工具,它们是接收函数并返回新函数的可调用对象。通过`@decorator`语法,可以在不修改原函数代码的情况下,添加如日志、性能监控等功能。装饰器促进代码复用、模块化,并保持源代码整洁。例如,`timer_decorator`能测量函数运行时间,展示其灵活性。
16 0
|
2天前
|
Python
python解包字典到函数参数
【7月更文挑战第5天】
6 2
|
2天前
|
数据采集 机器学习/深度学习 数据可视化
完整的Python数据分析流程案例解析-数据科学项目实战
【7月更文挑战第5天】这是一个Python数据分析项目的概览,涵盖了从CSV数据加载到模型评估的步骤:获取数据、预处理(处理缺失值和异常值、转换数据)、数据探索(可视化和统计分析)、模型选择(线性回归)、训练与评估、优化,以及结果的可视化和解释。此流程展示了理论与实践的结合在解决实际问题中的应用。
18 1
|
8天前
|
数据采集 前端开发 Java
Python简单爬虫案例
用pyhton从网页中爬取数据,是比较常用的爬虫方式。网页一般由html编写,里面包含大量的标签,我们所需的内容都包含在这些标签之中,除了对python的基础语法有了解之外,还要对html的结构以及标签选择有简单的认知,下面就用爬取fl小说网的案例带大家进入爬虫的世界。
|
3天前
|
Python
Python 中 decimal 模块的用法教程
Python 中 decimal 模块的用法教程
5 0
|
4天前
|
Python
|
4天前
|
API Python
Python学习日记(二:函数和逻辑操作)
Python中的函数和逻辑操作至关重要。函数包括可变和不可变参数。
|
5天前
|
安全 Java 开发者
Python中的多线程高级使用方法
**Python多线程高级指南摘要** 本文探讨了Python中多线程的高级技术,尽管GIL限制了并行执行,但多线程仍适用于IO密集型任务和提升UI响应。内容包括: - 使用`threading`模块导入和创建线程,示例展示了如何启动多个线程执行函数。 - 高级用法涉及线程池,通过`ThreadPoolExecutor`管理线程,简化大量线程的创建和控制。 - 线程同步:介绍锁和条件变量的概念,以及如何使用它们确保数据一致性。 - 避免死锁的策略,如使用`try/finally`确保锁的正确释放 - 线程局部数据(Thread Local Data)允许每个线程拥有独立的数据副本,避免冲突
|
8天前
|
Python
python之requests基础用法
python之requests基础用法
|
2月前
|
算法 Python 容器
Python编程 - 不调用相关choose库函数,“众数“挑选器、随机挑选器 的源码编程实现
Python编程 - 不调用相关choose库函数,“众数“挑选器、随机挑选器 的源码编程实现
50 0