【Python基础】内置函数filter详解

article/2025/8/23 7:27:14

filter,顾名思义,就是一个过滤器。其作用是从列表(或其他序列类型)中筛选出满足条件的子列表,filterpython的内置函数,无须import即可直接使用。

1 filter的基础用法

对于列表(或其他序列类型),如果希望从中筛选出满足某个约束条件的子列表,我们一般的做法是使用一个for循环遍历每个元素然后执行相同约束条件判断,将满足条件的放入新的子列表中。例如,从列表中找出所有偶数子列表,并按对应的先后顺序放入子列表中:

a = [1, 2, 3, 4, 5]
b  = []
for i in a:if i % 2 == 0:b.append(i)

那么如果使用filter的话,使用filter函数使得代码变得更简洁:

a = [1, 2, 3, 4, 5]
def check(i): return i % 2 == 0
b = list(filter(check, a))

2 filter与for循环性能对比

前面在讲map时,我们知道map函数除了能让代码更优雅以外,使用map比使用for循环速度更快。同样的,使用filter远比使用for循环快。我们做个实验,从长为100000的列表中,查找偶数对比耗时:

import timedef test_for(length):sub_list = []begin = time.perf_counter()for i in range(length):if i % 2 == 0:sub_list.append(i)end = time.perf_counter()print('for循环耗时:', (end - begin))def test_filter(length):def check(i):return i % 2 == 0begin = time.perf_counter()sub_list = filter(check, range(length))end = time.perf_counter()print('filter耗时:', (end - begin))test_for(100000)
test_filter(100000)

输出结果如下:

for循环耗时: 0.015271199999999999
filter耗时: 1.4000000000000123e-05

从输出结果可以看到:

十万级别数据上,filter的速度大约是for循环的1000倍。

当然了,具体的速度对比方面跟具体的硬件有关,一般而言,如果本地机器硬件配置越高,那么这个倍数越高。所以,平时写代码时,可以稍微注意一下,是否可以使用更高效的替代方案。

如果您觉得本文对你有帮助,欢迎关注我【Python学习实战】,第一时间获取最新更新。每天学习一点点,每天进步一点点。
关注【Python学习实战】


http://chatgpt.dhexx.cn/article/rF5SXfKn.shtml

相关文章

利用JS制作抖音同款3D照片墙(three.js)

利用JS制作抖音同款3D照片墙(three.js) 520快到了,跟我一起学习threeJS 用threeJS制作抖音同款3D照片墙 源码下载:3D照片墙源码下载地址

如何快速输出产品的用户故事地图

01 结构与作用 故事地图产生背景 用户故事地图就是将story用可视化的方式展现在团队面前,让团队可以仔细梳理、讨论,确认这个story包含的内容,最终产出需求进行开发。用户故事地图是Userstory的前传! 故事地图特点 不是另外一…

android qq勋章墙实现,科技教程:如何在手机QQ中进入勋章墙?

如今越来越多的小伙伴对于如何在手机QQ中进入勋章墙?这方面的问题开始感兴趣,看似平静的每一天,在每个人身上都在发生着各种各样的故事,因为大家现在都是想要了解到此类的信息,那么既然现在大家都想要知道如何在手机QQ…

全面解析用户故事地图

昨天一篇文章我们给大家分享了用户故事,这篇文章我们来分享故事地图。 什么是用户故事地图? “用户故事”的概念来源于敏捷开发的理念。用户故事是从用户的角度来描述自己渴望得到的特性以及带来的价值。现在流行的模板是: 英文: …

TAPD上手指南

目录 什么是TAPD 为什么使用TAPD 如何使用TAPD 工作台 需求——分类管理用户故事 迭代——敏捷研发,小步快跑 故事墙——直观展示需求状态 缺陷——快速跟进产品缺陷 报表——高效完成数据分析 文档—— 轻松在线协作编辑 什么是TAPD TAPD(Te…

使用 canvas 制作魔方墙

故事起因 我是一个魔方爱好者(只是爱好,但技术并不强),在大学期间担任过魔方社社长,每到招新的时候,一般都会用上千个魔方拼出招新二维码,显得比较有逼格。二维码本身也是一个一个的小格子组成…

在html中制作多彩照片墙,60个照片墙布置方案 记录浪漫时刻

照片墙在居家设计中有着重要的意义,现在也有越来越多的家庭在装修的时候为自己家设计一组漂亮的照片墙,这些照片墙可以表达不同的形式,让家居氛围更加温馨,如果你也喜欢照片墙可以选一些自己喜欢的照片或者装饰画,错落有致的挂在家中的墙面上,不仅温馨有趣,也为家装增添…

90%使用看板的人都踩过这4个大坑

看板因为成本低廉,使用方法易上手,被很多软件研发团队使用。 今天讲讲我看到的使用看板的几个常见的问题,以及如何避开这些问题,让看板发挥它真正的效用,让大家减少时间浪费,按时下班. 1 第一个坑&#xff…

大数据与墙的故事

在网站上看到这么一篇文章,转载过来和大家分享一下 文章出处:https://baike.baidu.com/tashuo/browse/content?id45bd8fd350d6aab5b6d81047&lemmaId1356941&lemmaId1356941&frqingtian 文章标题为:大数据与墙的故事&#xff0…

什么是用户故事地图?

为什么会有用户故事地图? 迭代开始后,待办列表总是以小块形式进入迭代开发,一个迭代接着一个迭代。碎片化的方式,不能给产品以及开发团队一个整体的视觉。这会出现,优先级排列问题,或者产生多个迭代后&…

用户故事地图

用户故事地图 用户故事是描述用户需求分析的一个好方法,可以将backlog变成一个二维地图,从而容易看到整个规划的全貌,帮助开发人员快速的了解客户的需求,并确定产品模块的实现优先级,实现最大用户价值,学会…

敏捷开发日常跟进系列之三:故事板,看板

这是敏捷开发日常跟进系列的第三篇。 (栏目目录) 故事板和看板其实不是一个东西,前者是最初的敏捷开发里边的东西,受到了后者的启发产生的;而后者是制造业的东西,具体内容请参考末尾的百度百科。但是在敏捷开发里边提到这两样东西,可以认为大致相同。 故事板 简单说,故…

敏捷管理的利器:故事墙

文章来源:公众号-智能化IT系统。 引言 故事墙是敏捷管理的一个高效手段。只要妥善运用,其能够带来的好处远远超出管理理论中提及的。 试想如下一些问题: 假如一个团队,有一个环节(例如系统测试)&#x…

【Web前端】html+css+javascript

1 HTML 1.1. HTML基本概念 HTML:hyper text markup language 超文本标记语言&#xff0c;就是超出纯文本范畴的语言&#xff0c;其中既可以定义文本也可以定义图片&#xff0c;超链接等等非文本性质的内容。 HTML语言是由标签<>构成&#xff0c;一般是成对出现<>…

HTML+CSS基础知识

一、HTML基础 1.html的基础结构&#xff1a; 2.html中的语法&#xff1a; - 在尖角符号后面的第一个英文单词就是当前标记的名称 - 标记也可以称为标签或者元素 - 双标签结束的反斜杠不能省略 但是单标签的反斜杠是可以省略的 - 在标签名称后面空格都是当前标签的属性(描述…

用HTML,css,boostrap写一个综合大型购物网站

用HTML&#xff0c;css,boostrap写一个综合大型购物网站 首先来看看页面的效果&#xff1a; 有需要的可以参考 首先是首页index: <!DOCTYPE html> <html><head><!-- 先把bootstrap里面的css、jQuery和bootstrap.js三个文件按顺序加载进来 --><me…

HTML+CSS项目案例

文章目录 1、表格练习2、文本样式练习3、图片标签练习4、盒子模型练习一5、盒子模型练习二6、盒子模型练习三7、浮动练习8、边框练习一9、边框练习二10、图文混排11、列表练习 1、表格练习 案例演示&#xff1a;&#xff08;table、tr、td、th等&#xff09; 实现代码&#x…

用css简单实现三级导航栏

关键属性 display&#xff1a;none 隐藏元素 display&#xff1a;bolck 显示元素 实例 CSS样式 <style>* {margin: 0;padding: 0;}li {list-style: none;}a {text-decoration: none;}.nav1 {width: 400px;height: 50px;/* border: 1px solid red; */margin: 200px aut…

使用 CSS3 实现转盘抽奖效果

微信和大型商场常常会有转盘抽奖的活动,比如上海移动和教授的抽取积分活动等。我们可以通过CSS3的transform属性来实现转盘的旋转。同时,transition属性实现过渡动画,它具有四个子属性,依次为 1. transition-property(过渡属性,默认为all) 2. transition-du…

css module

css module 一、css module1.思路2.实现原理3.如何应用样式 一、css module 1.思路 通过命名规范来限制类名太过死板&#xff0c;而css in js虽然足够灵活&#xff0c;但是书写不便。 css module 开辟一种全新的思路来解决类名冲突的问题 css module 遵循以下思路解决类名冲突…