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


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

相关文章
|
24天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
125 67
|
18天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
43 18
|
10天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
40 8
|
19天前
|
Python
Python中的函数
Python中的函数
32 8
|
26天前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
一分钟看懂Python中的 // 和 / 和 % 的用法区别
一分钟看懂Python中的 // 和 / 和 % 的用法区别
|
19天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
18天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
6天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
98 80

热门文章

最新文章