Python的高级特性4:函数式编程
2024-09-01 00:51:47
函数式编程的核心就是把函数当成对象来进行编程。
有两个常用到的方法:map/reduce,filter,其中map和filter是内建方法,而reduce不是,所以需要import相关模块。
map接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中一一进行处理,结果以list形式返回。
In [147]: def f(x):
.....: return x*x
.....: In [148]: r = map(f,[1,2,3,4,5,6]) In [149]: list(r)
Out[149]: [1, 4, 9, 16, 25, 36]
reduce接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而reduce可以把第二个参数每一次next方法执行的结果映射到函数中进行处理,然后返回一个计算后的值。其实质就是不断的嵌套把此层函数作为下一层函数的参数直到最后。
In [151]: from functools import reduce In [152]: def add(x,y):
.....: return x+y
.....: In [153]: reduce(add,[1,3,4,7,9])
Out[153]: 24 In [154]: reduce(add,[1])
Out[154]: 1
filter接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中,根据true/false过滤,结果以list形式返回。
In [156]: def is_odd(n):
.....: return n % 2 == 1
.....: In [157]: list(filter(is_odd, (1, 2, 4, 5, 6, 9, 10, 15)))
Out[157]: [1, 5, 9, 15]
最新文章
- mac 修改command+q 退出
- glyphicon halflings regular ttf 报错
- javascript正则表达式(一)
- 用时间生成用户Id
- JAVA获取时间戳,哪个更快
- win7(x64)+VS2012+cocos2d-x环境的配置以及试运行
- gcc 生成动态库时-fpic选项是什么意思。
- ffmepg命令行参数
- SuperSocket学习笔记(二)
- pom.xml配置详解
- 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
- .net DLL版本管理
- autocomplete初步使用
- 使用IIS调试ASP.NET网站程序
- vue图片被加了盗链
- Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more jquery-1.12.4.js:10208
- ubuntu 18.04下安装Hadoop
- MVC之——Razor语法
- C++与C#互调dll的实现步骤
- 移动端适配(3)——rem适配