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


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

相关文章
|
1天前
|
NoSQL Serverless Python
在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。
在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。方法一是直接赋值,如`df['C'] = 0`,创建新列C并初始化为0。方法二是应用函数,例如定义`add_column`函数计算A列和B列之和,然后使用`df.apply(add_column, axis=1)`,使C列存储每行A、B列的和。
11 0
|
3天前
|
机器学习/深度学习 数据采集 TensorFlow
【Python机器学习专栏】使用Python进行图像分类的实战案例
【4月更文挑战第30天】本文介绍了使用Python和深度学习库TensorFlow、Keras进行图像分类的实战案例。通过CIFAR-10数据集,展示如何构建和训练一个卷积神经网络(CNN)模型,实现对10个类别图像的识别。首先安装必要库,然后加载数据集并显示图像。接着,建立基本CNN模型,编译并训练模型,最后评估其在测试集上的准确性。此案例为初学者提供了图像分类的入门教程,为进一步学习和优化打下基础。
|
3天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
|
3天前
|
数据可视化 Python
Python用 PyMC3 贝叶斯推理案例研究:抛硬币和保险索赔发生结果可视化
Python用 PyMC3 贝叶斯推理案例研究:抛硬币和保险索赔发生结果可视化
10 0
|
4天前
|
Python 容器
Python中的for循环用法详解,一文搞定它
Python中的for循环用法详解,一文搞定它
|
4天前
|
Python
使用Seaborn库创建图形的使用案例
【4月更文挑战第29天】该代码段首先导入seaborn和matplotlib库,然后加载名为"titanic"的数据集。接着,它创建一个画布并设定子图大小。通过seaborn的FacetGrid以"Attrition_Flag"为列进行分组,映射数据到网格上,用histplot展示"Customer_Age"的直方图分布。同样,也使用boxplot方法生成"Freq"的箱线图。最后展示所有图形。
8 2
|
5天前
|
Python 容器
python内置函数、数学模块、随机模块(二)
python内置函数、数学模块、随机模块(二)
|
5天前
|
索引 Python
python内置函数、数学模块、随机模块(一)
python内置函数、数学模块、随机模块(一)
|
Python 存储
Python的高级特征你知多少?
IEEE Spectrum 于9月6日发布了2019年最受欢迎的编程语言排名,无疑Python蝉联第一,成绩颇为亮眼。从前年开始,Python 就开始霸占榜单长达 2 年,成为编程市场上份额最高的语言。 Python 多好用不用多说,大家看看自己用的语言就知道了。但是 Python 隐藏的高级功能你都 get 了吗?本文中,作者列举了 Python 中五种略高级的特征以及它们的使用方法,快来一探究竟吧!
994 0
Python的高级特征你知多少?
|
8天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
13 1