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. 关于pl/sql打开后database为空的问题解决办法

    前置条件:楼主是在虚拟机里面进行安装oracle和pl/sql的,所以我的安装后,发现我的pl/sql显示的database是空的,当然楼主会检查我的tnsnames.ora是不是配置正确了,但是检查 ...

  2. 注解之 @RestController 和 @RequestMapping

    Controller 是 Spring 中最基本的组件,主要处理用户交互,一般每个业务逻辑都会有一个 Controller,供用户请求接口进行数据访问:@RequestMapping 注解用于绑定UR ...

  3. jsp显示当前系统时间

    第一种方式: <% java.text.SimpleDateFormat simpleDateFormat = new java.text.SimpleDateFormat( "yyy ...

  4. idea中,springboot的热部署

    1.开启idea的自动编译(静态) 具体步骤:打开顶部工具栏File | Settings | Build, Execution, Deployment | Compiler 然后勾选 Build p ...

  5. 解决百度文字识别SDK拍照不回调问题

    在使用百度文字识别SDK的时候,发现点了拍照后camera.takePicture(ShutterCallback shutter, PictureCallback raw,PictureCallba ...

  6. tar中的参数 cvf,xvf,cvzf,zxvf的区别

    tar cvf etcbak.tar etc/  打包一个tar tar xvf etcbak.tar         解开一个tar tar cvzf etcbak.tar.gz etc/ 打包压缩 ...

  7. Git 中无法忽略 .xcuserstate 的解决方法

    1.查看代码变化git status 2.接着输入 git rm –cached 刚才复制的地址 ,如下.git rm --cached RxSwift/Rx.xcodeproj/xcuserdata ...

  8. Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑

    脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...

  9. eclipse CDT Error: Program "g++" not found in PATH

    右击project explore ->properties-  >c/c++ build->environment , 设置 mingw_home 路径

  10. bootstrap 上下页滚动

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...