Python中自带了几个比较有意思的函数,一般在面试或者笔试基础的时候会问到,其中3个就是map、filter、reduce函数。

1.map(function, iterable)

它第一个要传的元素是函数名或lambda匿名函数表达式,第二个元素传入可迭代对象。

array = [1,2,3,4,5]result = map(lambda x:x+1,array)result#这里result直接打印的结果是一个对象,需要用list转化一下才
可以看到具体结果<map object at 0x0000000003A79518>list(result)[2, 3, 4, 5, 6]

这里我们可以看到,map函数结果里的每一个元素都比原列表对应的元素大1,而我缩写的lambda表达式就是将每个元素加1。

由此可以看出map()函数的作用就是将可迭代对象里的每个元素进行函数操作,然后将元素操作后所组成的可迭代对象返回。

2.filter(function, iterable)

同样,第一个参数传入函数名或匿名函数,第二个元素传入可迭代对象

#先按map的函数传入试一下array = [1,2,3,4,5]result = filter(lambda x:x+1,array)result<filter object at
0x0000000003A79550>list(result)
#结果没有变化,说明对参数没有进行操作返回[1, 2, 3, 4, 5]
#将函数进行True、False判断返回试一下result1 = filter(lambda x:x if x%2==0 else None,array)result1<filter object at
0x0000000003C28A90>list(result1)
#返回了为True的值[2, 4]

由上面的代码可以得出,filter()函数是将可迭代对象的元素代入函数,然后返回为True的元素,一般做筛选的时候可以用到,不用再写循环。

3.reduce(function, iterable)

reduce函数只有在python2中才有,传入参数和map、filter是一样的。但它的函数传入的是两个元素,将前两个元素代入函数后返回操作后的值,将返回的值再作为第一个元素,同时将第三个元素作为第二个元素再次代入函数进行运算,直到结束返回最后结果。

array = [1,2,3,4,5]
result = reduce(lambda x,y:x+y,array)
list(result)
#1+2+3+4+5=1515

它的操作步骤其实很简单:

第一次x=1,y=2传入匿名函数,x+y是返回的值3

第二次x=3(返回的那个3),y=3(此3为列表中第二个元素)代入函数,返回x+y为6

第三次x=6,y=4,返回x+y为10

第四次x=10,y=5,返回x+y为15

后边没有元素可传入直接结束。

温馨提示:python工具里自带的函数不一定是最快的算法,只是为了方便使用,编写代码快速、简洁,如果追求速度的话还是要自己手撸最优算法。(所以面试才有那么多算法和数据结构的题目)

本文转载于https://www.py.cn/jishu/jichu/11175.html

Python中几个必须知道的函数的更多相关文章

  1. 【python】dir(__builtins__)查看python中所用BIF(内置函数)

    dir(__builtins__)查看python中所用BIF(内置函数)

  2. python中lambda,map,reduce,filter,zip函数

    函数式编程 函数式编程(Functional Programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.简单来讲,函 ...

  3. 【转】Python 中map、reduce、filter函数

    转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...

  4. python中列表和字典常用方法和函数

    Python列表函数&方法 Python包含以下函数: 序号 函数 1 cmp(list1, list2)比较两个列表的元素 2 len(list)列表元素个数 3 max(list)返回列表 ...

  5. python中通过字符串名来调用函数

    强调:eval()函数功能虽然强大,但是也很危险,这个方法需要慎重使用. 利用python中的内置函数 eval() ,函数说明: def eval(*args, **kwargs): # real ...

  6. python中的文件读写(open()函数、with open('file_directory','r') as f:、read()函数等)

    python中也有文件读写,通过调用内置的读写函数.可以完成文件的打开/关闭.读.写入.追加等功能. open()函数 open()函数为python中的打开文件函数,使用方式为: f = open( ...

  7. python中的作用域以及内置函数globals()-全局变量、locals()-局部变量

    在python中,函数会创建一个自己的作用域,也称为为命名空间.这意味着在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找. 通过内置函数globals()返回的是python解释器能知道的变 ...

  8. Python中如何实现im2col和col2im函数(sliding类型)

    今天来说说im2col和col2im函数,这是MATLAB中两个内置函数,经常用于数字图像处理中.其中im2col函数在<MATLAB中的im2col函数>一文中已经进行了简单的介绍. 一 ...

  9. Python中strip()、lstrip()、rstrip()函数的用法

    Python中使用函数strip().lstrip().rstrip()来剔除字符串前后的特定字符 函数语法为:str.strip(chars) 返回值是一个新的字符串,不更改源字符串 其中,参数ch ...

随机推荐

  1. 7.26T1四分图匹配

    四分图匹配 题目描述 一天晚上,zzh 在做梦,忽然梦见了她. 见到她,zzh 也不去看她,只顾低头自语…… “噫,OI 这个东西,真是无奇不有.” “嘿,你又学了什么?” “嗯,学到了一种算法,”z ...

  2. MySQL数据分析-(8)SQL基础操作之库操作

    前面我们讲了学习SQL的两个逻辑框架,jacky说了这样一个逻辑:库是为了存储表的,所以一定是先有库才有表:同样的道理,有表才有表中的数据,是吧,肯定是这个逻辑:那么,今天jacky就捋着这个逻辑从库 ...

  3. StringBuffer 拼写串

    StringBuffer ssBuffer=new StringBuffer(); for (int i = 0; i < lista.size(); i++) { ssBuffer=ssBuf ...

  4. Yarn 安装 node-sass 依赖导致 Build Fresh Packages 太慢的问题

    解决办法: 1. 在 项目目录下新建 .yarnrc 文件 添加以下代码 registry "https://registry.npm.taobao.org" sass_binar ...

  5. Java并发指南2:深入理解Java内存模型JMM

    本文转载自互联网,侵删   一:JMM基础与happens-before 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实 ...

  6. Qt数据库编程_基本

    QtSql模块提供了一个平台无关且数据库无关的访问SQL数据库的接口. Qt中的每个数据库连接用一个QSqlDatabase对象来表示:Qt使用不同driver来和各种不同数据库的API进行通讯. Q ...

  7. 使用express-session实现登录效果

    本文为后端练兵内容,重复造轮子,重复造轮子才能有经验,才能生出花来. 本次练兵,采用的是数据库保存账户密码,后端通过查数据库的方式,实现账号和密码的校验. 如果验证成功,将登陆状态保存在session ...

  8. php+mysql模糊查询功能

    一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表示任意0个或多个字符.可匹配任意类型和长度的字符,有 ...

  9. 海康大华RTSP格式

    海康实时流:rtsp://admin:12345@192.2.82.50:554/h264/ch4/main/av_stream海康回放流(模拟通道):rtsp://admin:12345@192.2 ...

  10. The input file should be UTF8 without a byte-order-mark(BOM)

    byte-order-mark = (BOM) 在unicode诸编码中,字节顺序标记-BOM被用于标记编码高低位的顺序. .BOM是一个特殊的unicode字符.早期标准定义其为“零长度.非断行的空 ...