首页 > 编程语言 >【Python基础】内置函数filter详解

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

时间:2022-09-04 17:00:32浏览次数:65  
标签:perf Python list 列表 filter 耗时 length 详解

filter,顾名思义,就是一个过滤器。其作用是从列表(或其他序列类型)中筛选出满足条件的子列表,filter是python的内置函数,无须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比使用for循环速度更快。同样的,使用filter远比使用for循环快。我们做个实验,从长为100000的列表中,查找偶数对比耗时:

import time

def 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 == 0
begin = 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

从输出结果可以看到:

经过测试比较 ,我发现,数据量越大,for的耗时越少。

结论:filter能让代码变的简洁,而for的效率更高。数据量越大,这一点越明显。

 

标签:perf,Python,list,列表,filter,耗时,length,详解
From: https://www.cnblogs.com/leeyong49/p/16655432.html

相关文章

  • Python中assert断言添加错误提示信息
    参考资料:https://www.cnblogs.com/meina/p/13848090.html当我们使用Python写代码的时候,可以多用assert断言语句来让代码变得更加鲁棒。但是如果单纯用assert......
  • python读取xlsx文件并转化为 json 数据
    fromopenpyxlimportload_workbookimportosfromreimportfindallimportjson#读取所有的sheet目录defread_xlsx(path="./"):lis=os.listdir(path)......
  • Python入门系列(九)pip、try except、用户输入、字符串格式
    pip包含模块所需的所有文件。检查是否安装了PIP$pip--version安装包$pipinstallpackage_name使用包importpackage_name删除包$pipuninstallcamelcase......
  • 10个python初学者常犯的错误
    下面10个python初学者常犯的错误,并不是真正的代码错误,代码照样可以运行,但是不够pythonic,因为python有自己的语言哲学,在代码的处理上有传统语言无法比拟的简洁性和便捷性。......
  • 总结90条写Python程序的建议
    首先建议1、理解Pythonic概念—-详见Python中的《Python之禅》建议2、编写Pythonic代码(1)避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过......
  • 掌握 Python 中下划线的 5 个潜规则
    本文将介绍Python中单下划线和双下划线("dunder")的各种含义和命名约定,名称修饰(namemangling)的工作原理,以及它如何影响你自己的Python类。单下划线和双下划线在Python......
  • 40 个好用的 Python 技巧
    Python简单易学,现今非常流行。Python被用于各种场景,如数据科学、机器学习、web开发、脚本编制、自动化等等。目录01列表推导式02枚举函数03通过函数返回多个值04......
  • 10 个实用的 Python 编程技巧
    字典翻转首先我们来看字典的翻转,假设我们有下面类似的一个字典对象与数据car_dict={"brand":"Tesla","model":"ModelY","year":2017}倘若我们......
  • Python 中的深拷贝和浅拷贝
    一、结论首先说结论:深拷贝出来的对象就是完完全全的新对象,不管是对象本身(id),还是对象中包含的子对象,都和原始对象不一样;浅拷贝出来的对象就是外新内旧的对象,对象本身(id......
  • Python 中的冒泡排序和解释 - 教程。
    Python中的冒泡排序和解释-教程。冒泡排序是您比较相邻值并相应地交换它的地方。这种排序算法有一些应用,其中一些是对数据库中的数据进行排序,例如:按价格对亚马逊产品进......